Dependencias de comstackción de Gradle

¿Cuál es la diferencia entre declarar repositorys en la sección buildScript de la comstackción gradle o en el nivel raíz de la comstackción?

Opción 1:

build.gradle :

 buildScript { repositories { mavenCentral(); } } 

o

build.gradle :

 repositories { mavenCentral(); } 

Los repositorys en el bloque de buildScript se utilizan para buscar las dependencias de sus dependencias de buildScript. Estas son las dependencias que se colocan en el classpath de su comstackción y que puede consultar desde su archivo de comstackción. Por ejemplo, los complementos adicionales que existen en Internet.

Los repositorys en el nivel raíz se utilizan para buscar las dependencias de las que depende su proyecto. Entonces, todas las dependencias que necesita para comstackr su proyecto.

El script de comstackción (es decir, build.gradle) puede tener algunas dependencias para la ejecución del script de comstackción en sí mismo. Debería encerrar esas dependencias dentro del bloque buildScript. El Capítulo 4 de Gradle Beyond the Basics lo describe en detalle.

Quiero darte una concepción clara. Por este motivo, 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 centrales:

 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 repositorys de comstackción. [Proyecto de dependencia externa]

ii) el archivo jar de dependencias de nivel raíz se descargará de los repositorys de nivel raíz. [Para la dependencia del proyecto]

Aquí,

El bloque “buildscript” solo controla dependencias para el proceso de comstackción en sí, no para el código de la aplicación. Como varios plugins de gradle como gradle-cobertura-plugin , gradle-lint-plugin se encuentran desde repos de buildscript. Esos complementos no serían referenciados como dependencias para el código de la aplicación.

Pero para la comstackción de proyectos y la ejecución de archivos jar en ejecución, como groovy all jar, junit and testng jar se encontrarán en los repositorys de nivel raíz.

Y otra cosa , la porción maven { url("https://plugins.gradle.org/m2/") } se puede usar en ambos bloques. Porque se usan para diferentes dependencias.

Enlace de recursos: Diferencia entre dependencias dentro del cierre de comstackción y núcleo