Memahami Manajemen Ketergantungan di Gradle
Repositori digunakan di Gradle untuk manajemen ketergantungan. Ada dua komponen untuk dependensi Gradle: dependensi dan publikasi proyek.
Saat Anda membangun proyek di Gradle, Anda mungkin memerlukan pustaka dari pengembang lain. Misalkan Anda memerlukan perpustakaan Apache Commons Lang untuk manipulasi string khusus. Jadi Anda membutuhkannya di classpath Anda agar kode Anda berfungsi. Dan Apache Commons Lang mungkin memerlukan perpustakaan tambahan yang tidak Anda ketahui. Gradle memungkinkan Anda untuk memberi tahu dependensi tertentu yang dibutuhkan proyek Anda dan itu akan pergi ke repositori yang ditentukan seperti Maven atau Ivy dan mencari tahu semua dependensi terkait dan mengunduh file dan mengaturnya untuk Anda secara otomatis.
Gradle juga memiliki kemampuan untuk mempublikasikan artefak Anda. Anda dapat memutuskan apa arti publikasi untuk kasus khusus Anda. Anda dapat mempublikasikannya secara lokal atau mempublikasikannya ke repositori Maven atau Ivy.
Contoh Repositori Gradle
Misalkan, kita ingin menggunakan kelas StringUtils dari perpustakaan Apache Commons Lang. Mari kita siapkan direktur seperti ini:
Halo Dunia|-- membangun.bertahap
'-- src
|-- utama
'-- jawa
'-- Halo Dunia
'-- Halo Dunia.Jawa
Di dunia halo.Java, Anda dapat memasukkan kode berikut:
impor organisasi.apache.milik bersama.lang3.StringUtils;kelas publik helloworld
public static void main(String[] args)
String salam = "Halo Dunia!";
Sistem.di luar.println(salam);
Sistem.di luar.println(StringUtils.swapCase(salam));
Dan dalam membangun.gradle Anda dapat meletakkan yang berikut ini:
terapkan plugin: 'java'versi = '1.0'
repositori
mavenCentral()
dependensi
kompilasi grup: 'org.apache.commons', nama: 'commons-lang3', versi: '3.7'
toples
dari konfigurasi.menyusun.kumpulkan zipTree it
Mari kita bahas apa yang terjadi pada skrip build di atas. Ia memberi tahu Gradle untuk mencari di repositori Maven untuk versi commons-lang3 3.7. Itu juga memberi tahu Gradle untuk mengemas dependensi ke dalam file jar. Jika Anda menghapus dari konfigurasi.menyusun.kumpulkan baris zipTree it, maka Anda harus memasukkan dependensi eksternal ke dalam classpath saat Anda menjalankan program.
Sekarang dari folder root, Anda dapat menjalankan build dengan perintah
$ toples gradleAnda akan melihat hasil seperti ini:
$ toples gradle
Unduh https://repo.ahli.apache.org/maven2/org/Apache/commons/commons-lang3/3.7/
commons-lang3-3.7.pom
Unduh https://repo.ahli.apache.org/maven2/org/Apache/commons/commons-parent/42/
commons-parent-42.pom
Unduh https://repo.ahli.apache.org/maven2/org/Apache/commons/commons-lang3/3.7/
commons-lang3-3.7.botol
MEMBANGUN SUKSES dalam 6 detik
2 tugas yang dapat ditindaklanjuti: 1 dieksekusi, 1 terbaru
Anda dapat menjalankan build seperti ini:
$ java -cp build/libs/helloworld-1.0.jar helloworldHalo Dunia!
Halo Dunia!
Jika Anda tidak memasukkan dependensi ke dalam build Anda, maka kelas StringUtils tidak akan disertakan dalam helloworld-1 Anda.0.file toples. Dan Anda akan mendapatkan kesalahan seperti ini:
$ java -cp build/libs/helloworld-1.0.toples helloworldHalo Dunia!
Pengecualian di utas "utama" Java.lang.NoClassDefFoundError: org/Apache/commons/lang3/
StringUtils di helloworld.utama (halo dunia.jawa:11)
Disebabkan oleh: jawa.lang.ClassNotFoundException: org.apache.milik bersama.lang3.StringUtils
di jawa.bersih.URLClassLoader.findClass(URLClassLoader.jawa:381)
di jawa.lang.Pemuat Kelas.loadClass(ClassLoader.jawa:424)
saat matahari.lain-lain.Peluncur$AppClassLoader.loadClass(Peluncur.jawa:331)
di jawa.lang.Pemuat Kelas.loadClass(ClassLoader.jawa:357)
… 1 lagi
Gradle memudahkan Anda untuk mengemas dependensi ke dalam paket Anda.
Kesimpulan
Menggunakan repositori Gradle dan fungsionalitas dependensi dapat menyederhanakan proses manajemen dependensi Anda. Anda tidak perlu melacak semuanya secara manual.
Pelajaran lanjutan:
Manajemen Ketergantungan Gradle untuk Proyek Java