Panduan tentang Gradle Wrapper

1. Ikhtisar

Gradle biasanya digunakan oleh pengembang untuk mengelola siklus proses pembangunan proyek mereka. Ini adalah pilihan default alat build untuk semua proyek Android baru.

Dalam tutorial ini, kita akan belajar tentang Gradle Wrapper, sebuah utilitas pendamping yang memudahkan pendistribusian proyek.

2. Pembungkus Gradle

Untuk membangun proyek berbasis Gradle, kita perlu menginstal Gradle di mesin kita. Namun, jika versi yang kami instal tidak sesuai dengan versi proyek, kami mungkin akan menghadapi banyak masalah ketidakcocokan.

Gradle Wrapper, singkatnya juga disebut Wrapper , memecahkan masalah ini. Ini adalah skrip yang menjalankan tugas Gradle dengan versi yang dideklarasikan . Jika versi yang dideklarasikan tidak diinstal, Wrapper menginstal yang diperlukan.

Manfaat utama Wrapper adalah kita dapat:

  • Buat proyek dengan Wrapper di komputer apa pun tanpa perlu menginstal Gradle terlebih dahulu
  • Memiliki versi Gradle tetap. Ini menghasilkan build yang dapat digunakan kembali dan lebih kuat di pipeline CI
  • Upgrade ke versi Gradle baru dengan mudah dengan mengubah definisi Wrapper

Di bagian selanjutnya, kita akan menjalankan tugas Gradle yang membutuhkan penginstalan Gradle secara lokal.

2.1. Menghasilkan File Pembungkus

Untuk menggunakan Wrapper, kita perlu membuat beberapa file tertentu. Kami akan membuat file ini menggunakan tugas Gradle bawaan yang disebut wrapper. Perhatikan bahwa kita perlu membuat file-file ini hanya sekali.

Sekarang, mari kita jalankan tugas pembungkus di direktori proyek kita:

$ gradle wrapper 

Mari kita lihat output dari perintah ini:

Mari kita lihat file-file ini:

  • gradle-wrapper.jar berisi kode untuk mendownload distribusi Gradle yang ditentukan dalam file gradle-wrapper.properties
  • gradle-wrapper.properties berisi properti runtime Wrapper - yang terpenting, versi distribusi Gradle yang kompatibel dengan proyek saat ini
  • gradlew adalah skrip yang menjalankan tugas Gradle dengan Wrapper
  • gradlew.bat adalah skrip batch setara gradlew untuk mesin Windows

Secara default, tugas pembungkus menghasilkan file Wrapper dengan versi Gradle yang saat ini terinstal di mesin. Kami dapat menentukan versi lain jika diperlukan:

$ gradle wrapper --gradle-version 6.3 

Kami merekomendasikan untuk memeriksa file Wrapper ke dalam sistem kontrol sumber seperti GitHub. Dengan cara ini kami memastikan bahwa developer lain dapat menjalankan proyek tanpa perlu menginstal Gradle.

2.2. Menjalankan Perintah Gradle dengan Pembungkus

Kita dapat menjalankan tugas Gradle apa pun dengan Wrapper dengan mengganti gradle dengan gradlew .

Untuk membuat daftar tugas yang tersedia, kita dapat menggunakan perintah tugas gradlew :

$ gradlew tasks

Mari kita lihat hasilnya:

Help tasks ---------- buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-wrapper'. components - Displays the components produced by root project 'gradle-wrapper'. [incubating] dependencies - Displays all dependencies declared in root project 'gradle-wrapper'. dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-wrapper'. dependentComponents - Displays the dependent components of components in root project 'gradle-wrapper'. [incubating] help - Displays a help message. model - Displays the configuration model of root project 'gradle-wrapper'. [incubating] outgoingVariants - Displays the outgoing variants of root project 'gradle-wrapper'. projects - Displays the sub-projects of root project 'gradle-wrapper'. properties - Displays the properties of root project 'gradle-wrapper'. tasks - Displays the tasks runnable from root project 'gradle-wrapper'.

Seperti yang bisa kita lihat, hasilnya sama dengan yang akan kita dapatkan saat menjalankan tugas ini dengan perintah gradle .

3. Masalah Umum

Sekarang, mari kita lihat beberapa masalah umum yang mungkin kita hadapi saat bekerja dengan Wrapper.

3.1. .Gitignore Global Yang Mengabaikan Semua File Jar

Beberapa organisasi tidak mengizinkan pengembang untuk memeriksa file jar ke dalam sistem kendali sumber mereka. Biasanya, proyek semacam itu memiliki aturan dalam file .gitignore global untuk mengabaikan semua file jar. Oleh karena itu, file gradle-wrapper.jar tidak diperiksa ke dalam repositori git. Karena alasan ini, tugas Wrapper gagal dijalankan di komputer lain. Dalam kasus seperti itu, kita perlu menambahkan file gradle-wrapper.jar ke git secara paksa :

git add -f gradle/wrapper/gradle-wrapper.jar

Demikian pula, kami mungkin memiliki file .gitignore khusus proyek yang mengabaikan file jar. Kita bisa memperbaikinya baik dengan melonggarkan aturan .gitignore atau dengan menambahkan file jar pembungkus secara paksa, seperti yang ditunjukkan di atas.

3.2. Folder Pembungkus Hilang

Saat memeriksa dalam proyek berbasis Wrapper, kita mungkin lupa untuk memasukkan folder pembungkus yang ada di dalam folder gradle . Tetapi seperti yang telah kita lihat di atas, folder pembungkus berisi dua file penting: gradle-wrapper.jar dan gradle-wrapper.properties.

Tanpa file ini, kita akan mendapatkan error saat menjalankan tugas Gradle dengan Wrapper. Oleh karena itu, kita harus memeriksa folder pembungkus ke dalam sistem kendali sumber .

3.3. File Pembungkus yang Dihapus

Proyek berbasis Gradle berisi folder .gradle yang menyimpan cache untuk mempercepat tugas Gradle. Terkadang, kami perlu menghapus cache untuk memecahkan masalah build Gradle. Biasanya, kami menghapus seluruh folder .gradle . Tapi kita mungkin salah mengira folder gradle Wrapper dengan folder .gradle dan menghapusnya juga. Setelah itu, kami pasti akan menghadapi masalah saat mencoba menjalankan tugas Gradle dengan Wrapper.

Kami dapat mengatasi masalah ini dengan menarik perubahan terbaru dari sumbernya . Alternatifnya, kita dapat membuat ulang file Wrapper.

4. Kesimpulan

Dalam tutorial ini, kita belajar tentang Gradle Wrapper dan penggunaan dasarnya. Kami juga belajar tentang beberapa masalah umum yang mungkin kami hadapi saat bekerja dengan Gradle Wrapper.

Seperti biasa, kita dapat memeriksa proyek dengan file Gradle Wrapper yang dihasilkan di GitHub.