Saya baru mengenal Gradle dan saya membaca dokumentasinya tetapi saya tidak mengerti beberapa bagian darinya. Salah satu bagian ini terhubung dengan buildscript
blok. Apa tujuannya?
Jika skrip build Anda perlu menggunakan pustaka eksternal, Anda bisa menambahkannya ke classpath skrip di skrip build itu sendiri. Anda melakukan ini menggunakan metode buildscript (), memberikan penutupan yang menyatakan classpath script build.
buildscript { repositories { mavenCentral() } dependencies { classpath group: 'commons-codec', name: 'commons-codec', version: '1.2' } }
Ok tapi apa bedanya dengan:
repositories {
mavenCentral()
}
dependencies {
compile group: 'commons-codec', name: 'commons-codec', version: '1.2'
}
Misalnya, mengapa perlu digunakan buildscript
?
Jawaban:
The
buildScript
blok menentukan plugin, kelas tugas, dan kelas-kelas lain yang tersedia untuk digunakan dalam sisa membangun script . TanpabuildScript
blok, Anda dapat menggunakan semua yang dikirimkan dengan Gradle out-of-the-box. Jika Anda juga ingin menggunakan plugin pihak ketiga, kelas tugas, atau kelas lain (dalam skrip build!), Anda harus menentukan dependensi yang sesuai di dalambuildScript
blok.sumber
sample.infotask', name: 'infotask', version: '1.0'
Dan menggunakan tugas _uploadArchives untuk mengunggahnya ke repo lokal ../lib ' Dalam proyek lain jika saya menggunakan tugas saya, saya harus menulis: `buildscript {repositories {maven {url' file: ../ lib '}} dependensi {classpath grup:' sample.infotask ', nama:' infotask ', versi:' 1.0 '}} Apakah saya benar? Mengapa kita harus menggunakan blok buildScript ? Ketika saya mengunggah artefak lokal, saya memiliki toples di mesin saya. Dan hanya harus memberitahu Gradle dari mana dan apa yang harus dimasukkan ke jalur kelas saya tidak ada lagi yang spesial di sini?buildScript
blok karena Gradle memerlukan informasi ini untuk memahami sisa skrip build . Itu sebabnya Anda harus memberikan informasi ini di saluran terpisah (buildScript
blok). Secara teknis, Gradle membutuhkan informasi ini untuk mengkompilasi dan mengevaluasi sisa skrip build. Apa yang terjadi di bawah tenda adalah bahwa Gradle memisahkan skrip build menjadi dua skrip (buildScript
blok dan yang lainnya) sehingga dapat memprosesnya secara terpisah.dependencies
danrepositories
bagian daftar dependensi yang diperlukan untuk membangun sumber Anda dan menjalankan sumber Anda dll.buildscript
untukbuild.gradle
file itu sendiri. Jadi, ini akan berisi dependensi untuk mengatakan membuat RPMDockerfile
,, dan dependensi lain untuk menjalankan tugas di semua dependenbuild.gradle
sumber
buildscript
hanyalah ketergantungan untuk skrip build AndaSaya menghargai jawaban Peter ... tetapi tidak segera jelas bagi saya apa arti dari skrip build sebagaimana ditekankan dalam jawaban dan dalam dokumentasi.
Biasanya membawa fungsionalitas dependen adalah untuk digunakan dalam program Java atau program lain apa pun yang mungkin Anda tulis. Membawa di Spring mengatakan, tidak untuk digunakan dalam skrip build, tetapi dalam program Java. Menempatkannya di
buildscript
penutup memastikan bahwa dependensi tersedia untuk digunakan dalam gradle build itu sendiri. Bukan program keluaran.sumber
Bagian konfigurasi "buildscript" adalah untuk gradle itu sendiri (yaitu mengubah bagaimana gradle dapat melakukan build). Jadi bagian ini biasanya akan menyertakan plugin Android Gradle.
sumber
Levelnya agak tinggi tetapi harapan membantu.
Bagi saya, perbedaan yang jelas mulai terbentuk begitu saya mulai memahami apa itu building block , metode, dan tugas. Seperti apa sintaksisnya, bagaimana Anda dapat mengonfigurasinya, dll. Jadi saya sarankan Anda membaca semua ini. Setelah itu, Anda dapat mulai memahami sintaks ini.
Maka sangat penting untuk mengetahui apa tipe objek build.gradle (turunan dari kelas Project) sehingga untuk mengetahui apa yang dapat Anda miliki di dalam file build.gradle. Itu akan menjawab dari mana 'buildScript' dan lainnya berasal. Dan untuk memperluas kemampuan / fitur Anda (misalkan Android), lihat bagaimana plugin dapat membantu.
Last but not least, ada tutorial yang sangat bagus di sini yang berbicara tentang penutupan, delegasi yang merupakan konsep penting untuk memahami skrip.
sumber
Penjelasan lebih banyak dengan menunjukkan file gradle tingkat atas Android.
file tingkat tingkat modul
Apa itu "plugin"? Mereka hanya kelas java, yang mengimplementasikan antarmuka Plugin. Di bawah antarmuka, ia memiliki metode "berlaku" untuk menambahkan beberapa objek tugas dengan nama yang berbeda. Tugas adalah kelas tempat kita dapat mengimplementasikan alur kerja. Misalnya, tugas pembangunan terdiri dari aliran membangun aplikasi.
Jadi, apa yang dilakukan buildscript? Ini menentukan di mana menemukan plugin. Apa yang dilakukan plugin? Ini mencakup beberapa tugas. Apa yang dilakukan tugas? Ini memberi kami build, install, lint, dll.
Pemahaman saya mungkin salah. Tolong jangan ragu untuk mengoreksi saya jika Anda menemukan sesuatu yang menyesatkan.
sumber