Jika saya mengerti dengan benar, Anda mengacaukan Project.dependencies
blok skrip dengan Project.buildscript.dependencies
blok skrip (seperti yang saya lakukan ketika saya mencapai pertanyaan ini).
Saya akan mencoba menjawab ini dengan apa yang saya temukan.
Saya pikir Anda seharusnya sudah terbiasa dengan Project.dependencies
blok skrip. Di blok ini, kami mendeklarasikan dependensi yang diperlukan oleh kode sumber kami. Ada beberapa cara untuk mendeklarasikan ketergantungan yang kita perlukan untuk proyek tersebut. Lihat Tutorial Gradle: Jenis Ketergantungan . Saya hanya akan menyebutkan bagian yang paling relevan dengan masalah ini:
compile 'org.hibernate:hibernate-core:5.0.5.Final'
adalah deklarasi ketergantungan modul. Konfigurasi kompilasi (yang sekarang sudah tidak digunakan lagi oleh konfigurasi implementasi.) Hanyalah sebuah kata kunci untuk Implementation only dependencies.
Ini bukan kata kunci yang menjelaskan jenis ketergantungannya (menurut jenis di sini saya mengikuti tiga jenis yang ditentukan dalam tutorial, yaitu modul, file, dan proyek.)
Dalam Gradle Tutorial: Organizing Build Logic dikatakan:
Jika skrip build Anda perlu menggunakan pustaka eksternal, Anda dapat menambahkannya ke classpath skrip dalam skrip build itu sendiri. Anda melakukan ini menggunakan metode buildscript (), meneruskan closure yang mendeklarasikan classpath skrip build.
Ini adalah cara yang sama Anda mendeklarasikan, misalnya, classpath kompilasi Java. Anda dapat menggunakan salah satu tipe dependensi yang dijelaskan dalam Tipe Ketergantungan, kecuali ketergantungan proyek.
Setelah mendeklarasikan classpath skrip build, Anda dapat menggunakan kelas dalam skrip build seperti yang Anda lakukan pada kelas lain di classpath.
Saya harap semuanya menjadi jelas bagi Anda sekarang.
Dengan classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
kami menyetel classpath
metode com.android.tools.build:gradle:${Versions.android_gradle_plugin}
yang merupakan dependensi modul yang digunakan oleh skrip build itu sendiri, bukan sumber dalam proyek Anda.
Di sisi lain, dengan compile 'org.hibernate:hibernate-core:5.0.5.Final'
kami mendeklarasikan ketergantungan modul yang diperlukan untuk proyek Anda dengan konfigurasi kompilasi .
tl; dr: The classpath
,, compile
dan implementation
adalah semua kata kunci yang dapat digunakan melawan dependensi dalam keadaan yang berbeda. Yang pertama digunakan saat Anda ingin meneruskan dependensi ke skrip build, dan yang terakhir adalah salah satu konfigurasi yang mungkin ingin Anda deklarasikan.
classpath
bukan cakupan ketergantungan yang valid.