Подтвердить что ты не робот

Gradle: что такое настройка по умолчанию и как ее изменить?

Когда я запускаю задачу "зависимости", есть несколько разделов: компиляция, время выполнения, testCompile...

Один из этих разделов - "default - Конфигурация для артефактов по умолчанию". Что это за раздел и для чего он используется?

Как мне изменить то, что находится в "конфигурации по умолчанию"?

Детали: Gradle 1.7

4b9b3361

Ответ 1

Если ваша сборка не публикует модули Ivy, конфигурация default в основном имеет значение при работе с зависимостями проекта в многопроектной сборке. Учитывая многопроектную сборку с проектами A и B, если A объявляет зависимость проекта от B без явного указания конфигурации (например, dependencies { compile project(":B") }, A (точнее конфигурация A compile) будет зависеть от конфигурации проекта B default Другими словами, dependencies { compile project(":B") } является ярлыком для dependencies { compile project(path: ":B", configuration: "default") }.

Конфигурация default простирается от конфигурации runtime, что означает, что она содержит все зависимости и артефакты конфигурации runtime и потенциально больше. Вы можете добавлять зависимости и артефакты обычным способом (используя блок dependencies/artifacts в B build script). В качестве альтернативы, B может объявить пользовательскую конфигурацию, и A может зависеть от этого, явно называя эту конфигурацию (например, dependencies { compile project(path: ":B", configuration: "myCustomConfig") }.

Ответ 2

При использовании Java-плагина gradle конфигурация "по умолчанию" extendsFrom "runtime", "runtimeOnly", "creation"

Если вы не используете плагин Java, вы можете определить его самостоятельно следующим образом:

configurations {
    "default"
}

Плагин Java устанавливает здесь конфигурацию по умолчанию: https://github.com/gradle/gradle/blob/85d30969f4672bb2739550b4de784910a6810b7a/subprojects/plugins/src/main/java/org/gradle/api/plugins/JavaPlugin.java#L437

Документация не так хороша в этой области.

Пример "обслуживания" артефакта по умолчанию из составной сборки. В этом примере создается подпроект, который ссылается на зависимость в другом проекте. Это может быть необходимо при работе с составными сборками, так как от них может зависеть только группа "по умолчанию".

Мы используем это, чтобы взять много jar файлов из одного проекта и использовать его в качестве разных зависимостей, когда ссылаемся на проект как на составную сборку.

apply plugin: 'base'

configurations {
    depend
}

dependencies {
    depend project(path: ':', configuration: 'ConfWithArtifact')
}

artifacts {
    "default" (file: configurations.depend.singleFile) {
        builtBy(configurations.depend)
    }
}