Voglio darti un'idea chiara. Per questo motivo, allego build.grade codice di istantanea per una migliore comprensione.
dipendenze 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'
}
}
livello radice / dipendenze core:
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'
}
Quindi, per prima cosa voglio chiarire in una sola parola
i) il file jar delle dipendenze buildscript verrà scaricato dai repository buildscript. [Dipendenza esterna del progetto]
ii) il file jar delle dipendenze a livello root verrà scaricato dai repository a livello root. [Per dipendenza dal progetto]
Qui,
Il blocco "buildscript" controlla solo le dipendenze per il processo buildscript stesso, non per il codice dell'applicazione. Come vari plugin gradle come gradle-cobertura-plugin
,gradle-lint-plugin
si trovano dai repository buildscript. Quei plugin non verrebbero indicati come dipendenze per il codice dell'applicazione.
Ma per la compilazione di progetti e testare file jar in esecuzione come groovy all jar, junit and testng jar
troveranno dai repository di livello principale.
E un'altra cosa ,maven { url("https://plugins.gradle.org/m2/") }
porzione può essere utilizzata in entrambi i blocchi. Perché sono usati per dipendenze diverse.
Collegamento alle risorse: differenza tra dipendenze all'interno della chiusura buildscript e core