Saya ingin memberi Anda konsepsi yang jelas. Untuk alasan ini, saya melampirkan kode snapshot build.grade untuk pemahaman yang lebih baik.
dependensi 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'
}
}
tingkat akar / ketergantungan inti:
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'
}
Jadi, Pertama saya ingin mengklarifikasi dengan satu kata itu
i) file jar dependensi buildscript akan diunduh dari repositori buildscript. [Ketergantungan eksternal proyek]
ii) file jar dependensi level root akan diunduh dari repositori level root. [Untuk ketergantungan proyek]
Sini,
Blok "buildscript" hanya mengontrol dependensi untuk proses buildscript itu sendiri, bukan untuk kode aplikasi. Seperti berbagai plugin gradle gradle-cobertura-plugin
, gradle-lint-plugin
ditemukan dari repo buildscript. Plugin tersebut tidak akan dirujuk sebagai dependensi untuk kode aplikasi.
Tetapi untuk kompilasi proyek dan menguji menjalankan file jar seperti groovy all jar, junit and testng jar
akan ditemukan dari repositori tingkat root.
Dan satu hal lagi , maven { url("https://plugins.gradle.org/m2/") }
porsi dapat digunakan di kedua blok. Karena mereka digunakan untuk dependensi yang berbeda.
Resource Link: Perbedaan antara dependensi di dalam buildscript closure dan core