Eu quero lhe dar uma concepção clara. Por esse motivo, estou anexando o código de captura instantânea build.grade para melhor entendimento.
dependências 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'
}
}
nível raiz / dependências principais:
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'
}
Então, primeiro eu quero esclarecer em uma única palavra que
i) o arquivo jar das dependências do buildscript será baixado dos repositórios do buildscript. [Dependência externa do projeto]
ii) o arquivo jar das dependências no nível raiz será baixado dos repositórios no nível raiz. [Para dependência do projeto]
Aqui,
O bloco "buildscript" controla apenas dependências para o próprio processo buildscript, não para o código do aplicativo. Como vários plugins gradle como gradle-cobertura-plugin
, gradle-lint-plugin
são encontrados em repositórios buildscript. Esses plug-ins não seriam referenciados como dependências para o código do aplicativo.
Mas para a compilação do projeto e o teste de execução de arquivos jar como groovy all jar, junit and testng jar
serão encontrados nos repositórios no nível raiz.
E outra coisa , maven { url("https://plugins.gradle.org/m2/") }
parte pode ser usada nos dois blocos. Porque eles são usados para diferentes dependências.
Link do recurso: Diferença entre dependências no fechamento do buildscript e no núcleo