Gradle buildscript зависимости
В чем разница между декларированием репозиториев в buildScript
раздел сборки Gradle или корневой уровень сборки.
Опция 1:
build.gradle:
buildScript {
repositories {
mavenCentral();
}
}
или же
build.gradle:
repositories {
mavenCentral();
}
3 ответа
Репозитории в блоке buildScript используются для извлечения зависимостей ваших зависимостей buildScript. Это зависимости, которые помещаются в classpath вашей сборки и на которые вы можете ссылаться из вашего файла сборки. Например, дополнительные плагины, которые существуют в Интернете.
Репозитории на корневом уровне используются для получения зависимостей, от которых зависит ваш проект. Так что все зависимости вам нужны для компиляции вашего проекта.
Я хочу дать вам четкое представление. По этой причине я прилагаю код снимка build.grade для лучшего понимания.
зависимости buildscript:
buildscript {
repositories {
maven { url("https://plugins.gradle.org/m2/") }
}
dependencies {
classpath 'net.saliman:gradle-cobertura-plugin:2.3.2'
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
зависимости корневого уровня / ядра:
repositories{
mavenLocal()
maven { url("https://plugins.gradle.org/m2/") }
maven { url "https://repo.spring.io/snapshot" }
}
dependencies {
//Groovy
compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.10'
//Spock Test
compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.3'
//Test
testCompile group: 'junit', name: 'junit', version: '4.10'
testCompile group: 'org.testng', name: 'testng', version: '6.8.5'
}
Итак, сначала я хочу уточнить одним словом, что
i) файл jar зависимостей buildscript будет загружен из репозиториев buildscript. [Внешняя зависимость проекта]
ii) файл jar зависимостей корневого уровня будет загружен из репозиториев корневого уровня. [Для зависимости проекта]
Вот,
Блок "buildscript" контролирует зависимости только для самого процесса buildscript, а не для кода приложения. Как различные Gradle плагин, как gradle-cobertura-plugin
, gradle-lint-plugin
находятся в репозиториях buildscript. Эти плагины не будут ссылаться как зависимости для кода приложения.
Но для компиляции проекта и тестирования запуска файлов JAR, таких как groovy all jar, junit and testng jar
будет найден в репозиториях корневого уровня.
И еще одна вещь, maven { url("https://plugins.gradle.org/m2/") }
часть может использоваться в обоих блоках. Потому что они используются для разных зависимостей.
Ссылка на ресурс: Разница между зависимостями в закрытии buildscript и ядром
Сценарий сборки (т. Е. Build.gradle) может иметь некоторые зависимости для выполнения самого сценария сборки. Вы бы заключили эти зависимости в блок buildScript. Глава 4 Gradle Beyond the Basics описывает это подробно.