Quiero darte una idea clara. Por esta razón, adjunto el código de instantánea build.grade para una mejor comprensión.
dependencias de 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'
}
}
Nivel raíz / dependencias principales:
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'
}
Entonces, primero quiero aclarar en una sola palabra que
i) el archivo jar de dependencias de buildscript se descargará de los repositorios de buildscript. [Dependencia externa del proyecto]
ii) el archivo jar de dependencias de nivel raíz se descargará de los repositorios de nivel raíz. [Por dependencia del proyecto]
Aquí,
El bloque "buildscript" solo controla las dependencias para el proceso buildscript en sí, no para el código de la aplicación. Como varios plugins de gradle gradle-cobertura-plugin
, gradle-lint-plugin
se encuentran en los repositorios de buildscript. Esos complementos no serían referenciados como dependencias para el código de la aplicación.
Pero para la compilación de proyectos y la ejecución de pruebas, los archivos jar groovy all jar, junit and testng jar
se encontrarán en repositorios de nivel raíz.
Y otra cosa , la maven { url("https://plugins.gradle.org/m2/") }
porción se puede usar en ambos bloques. Porque se usan para diferentes dependencias.
Enlace de recursos: diferencia entre dependencias dentro del cierre buildscript y núcleo