5 Ide & Topik Proyek Multi-Modul Maven yang Menyenangkan untuk Pemula [2022]

Diterbitkan: 2021-05-27

Karena setiap proyek menjadi lebih kompleks dan berlapis, cara yang benar untuk mengelolanya adalah dengan membaginya menjadi modul yang berbeda. Di Maven, meskipun dimungkinkan untuk menautkan beberapa proyek ini sebagai dependensi, itu membuat proses pembangunan menjadi jauh lebih kompleks. Oleh karena itu, pendekatan yang lebih disukai adalah menyusun proyek sebagai proyek multi-modular dan meneruskan sisanya ke Maven.

Daftar isi

Manfaat Menggunakan Multi-Modul di Maven

Keuntungan signifikan menggunakan multi-modul daripada injeksi ketergantungan atau prosedur lainnya adalah mengurangi duplikasi. Untuk memahami ini dengan lebih baik, misalkan Anda sedang mengerjakan aplikasi yang terdiri dari dua modul – katakanlah modul backend dan modul frontend.

Jika Anda mengerjakan kedua modul tersebut dan mengubah fungsionalitas tertentu yang memengaruhi kedua modul, Anda harus membuat modul atau komponen secara terpisah tanpa alat bantu khusus. Atau, Anda harus menulis skrip untuk mengkompilasi kode, menjalankan tes, dan menampilkan hasil akhir.

Sekarang, jika kompleksitas meningkat lebih jauh dan proyek Anda memiliki lebih dari dua modul, akan semakin sulit untuk melakukan tugas ini tanpa alat build khusus. Selanjutnya, dalam masalah dunia nyata, proyek Anda mungkin memerlukan beberapa plugin Maven untuk melakukan beberapa operasi penting selama seluruh siklus hidup build, berbagi dependensi, atau menyertakan proyek BOM lainnya.

Sebagai hasil dari tantangan ini, multi-modul di Maven sangat membantu dan memungkinkan Anda membangun modul aplikasi dalam satu baris perintah. Ini juga memungkinkan Anda untuk berbagi sejumlah besar data dan konfigurasi antara beberapa modul dengan mulus.

Baca Juga: Jawaban Soal Wawancara Maven

Istilah Kunci yang Perlu Diketahui Mengenai Proyek Multi-Modul di Maven

1. POM Induk (Modul Objek Proyek)

Setiap file pom.xml di Maven – untuk mendukung pewarisan – memiliki POM induk, yang dikenal sebagai Super POM. Ini dapat ditemukan di binari Maven, dan Anda juga dapat menggabungkan dua file untuk membuat POM Efektif.

Jadi, Anda dapat membuat file pom.xml Anda sendiri sebagai induk untuk proyek Anda. Setelah Anda selesai melakukannya, Anda dapat menambahkan semua dependensi dan konfigurasi, mengaturnya sebagai induk dari modul anak, dan mengaktifkan pewarisan. Kecuali untuk warisan, Maven juga menyediakan agregasi. POM Induk yang memanfaatkan fungsionalitas agregasi dikenal sebagai POM agregat – POM jenis ini mendeklarasikan modul anak secara eksplisit dalam file pom.xml.

2. Submodul

Subproyek, juga dikenal sebagai submodul, dapat dipahami sebagai modul Maven standar yang diturunkan dari POM induk. Menggunakan warisan, modul berbagi berbagai dependensi dan konfigurasi. Namun, jika Anda perlu membangun proyek dengan cepat, Anda harus mendeklarasikan submodul secara eksplisit di POM Induk, menjadikannya POM agregat.

3. Proyek Multi-Modul Sederhana

Aplikasi dan util adalah dua modul yang terdapat dalam Proyek Multi-Modul Sederhana. Modul util diperlukan untuk menyediakan metode statis untuk menggabungkan atau menambahkan string yang berbeda menggunakan pustaka Apache Commons Lang, dan modul aplikasi diperlukan untuk memanggil modul util. Berikut cuplikan dari file app.java:

simple-multi/app/src/main/java/app/App.java

Aplikasi kelas publik {

public static void main(String[] args) {

System.out.println(Aplikasi baru().greet(“Dunia!”));

}

salam String publik(Nama string) {

return Util.join(“Halo”, nama);

}

}

Untuk membangun proyek, jalankan

$ cd simple-multi

$mvn tes bersih

Pembuat kode Maven membangun kedua modul proyek Anda dalam urutan yang benar, melakukan tes yang diperlukan, dan mengeluarkan hasilnya dalam format ringkasan yang mudah dimengerti, seperti di bawah ini:

4. Struktur Proyek Multi-Modul

Berikut tata letak proyek Multi-Modul sederhana:

Direktori simple-multi adalah direktori root dan ada di bagian paling atas dari keseluruhan proyek. Ini berisi POM tingkat atas (POM Induk), tetapi POM Induk ini tidak memiliki folder sumber apa pun.

Direktori tingkat atas juga berisi app dan util, yang merupakan proyek Maven reguler dengan direktori dan file pom.xml.

POM tingkat atas dan POM modul sedikit berbeda dari POM biasa. Mari kita lihat secara detail apa isinya:

5. POM Tingkat Atas

POM Induk atau POM tingkat atas diperlukan oleh Proyek Multi-Modul Maven di direktori root.

POM tingkat atas mendefinisikan aspek penting dan koordinat proyek seperti artifactID, versi, dan groupID, seperti dalam proyek normal lainnya. Namun, jenis kemasan untuk ini bukan dalam format war atau jar biasa melainkan sebagai pom. Ini karena modul tingkat atas tidak berisi direktori sumber lebih lanjut. Elemen modul/modul menambahkan modul aplikasi dan util.

Isi dari file ini antara lain:

simple-multi/pom.xml

<project xmlns=”http://maven.Apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=”http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd”>

<modelVersion>4.0.0</modelVersion>

<groupId>org.codetab</groupId>

<artifactId>multi-sederhana</artifactId>

<versi>1.0</versi>

<packaging>pom</packaging>

<modul>

<modul>aplikasi</modul>

<module>util</module>

</modul>

</proyek>

Singkatnya, POM tingkat atas menentukan jenis kemasan pom dan secara eksplisit mencantumkan semua submodul.

Ingatlah bahwa Anda tidak perlu khawatir tentang pemesanan saat mendeklarasikan submodul di POM Induk karena Maven menggunakan Reaktor untuk memesan modul yang terdaftar dengan benar. Dalam simple-multi, maven membangun modul util dan kemudian aplikasi karena aplikasi bergantung pada util.

5. Modul POM

Folder Modul POM berisi folder sumber reguler dan file pom.xml-nya sendiri. Isi dari util/pom.xml ini adalah:

util/pom.xml

<project xmlns=”http://maven.Apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=”http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd”>

<modelVersion>4.0.0</modelVersion>

<induk>

<groupId>org.codetab</groupId>

<artifactId>multi-sederhana</artifactId>

<versi>1.0</versi>

</induk>

<artifactId>util</artifactId>

<properti>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

</properti>

<ketergantungan>

<ketergantungan>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<versi>3.6</versi>

</ketergantungan>

<ketergantungan>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<versi>4.12</versi>

<scope>test</scope>

</ketergantungan>

</dependensi>

</proyek>

Tidak perlu menentukan groupID dan versi untuk modul karena akan diwarisi dari induknya. Blok dependensi/dependensi mendefinisikan dependensi modul util – commons-lang3 dan JUnit.

Sekarang, mari kita lihat app/pom.xml, yang sangat mirip dengan util/pom.xml, kecuali untuk blok dependensi, yang ditunjukkan di bawah ini:

app/pom.xml

….

<ketergantungan>

<ketergantungan>

<groupId>org.codetab</groupId>

<artifactId>util</artifactId>

<versi>1.0</versi>

</ketergantungan>

….

</dependensi>

Modul aplikasi menggunakan metode dari modul util, dan untuk ini, app/pom.xml menetapkan util sebagai dependensi.

Untuk meringkas semua hal yang dijelaskan di atas:

Proyek tingkat atas (proyek induk),

  • Mendefinisikan pom.xml tingkat atas, yang menentukan semua koordinat dan submodul, dan menetapkan jenis kemasan sebagai pom.
  • Berisi folder modul lebih lanjut.
  • Tidak mengandung folder sumber.

Setiap folder modul tidak lain adalah direktori proyek Maven biasa. Namun, file pom.xml berisi:

  • Elemen induk menentukan induk modul.
  • Koordinat modul ditentukan dalam elemen artifactID. GroupID dan versi tidak disebutkan karena diwarisi dari koordinat induk.
  • Ketergantungan, jika satu modul bergantung pada yang lain, disebutkan dalam elemen dependensi/dependensi.

Menjalankan Proyek Multi-Modul

Perintah $mvn clean package dapat digunakan untuk mengkompilasi, menguji, dan mengemas multi-modul. Namun, untuk menjalankannya dengan maven-exec-plugin memerlukan langkah-langkah berikut:

Jalankan perintah berikut:

$ cd simple-multi

$mvn instal bersih

$ mvn exec:java -pl app -Dexec.mainClass=app.App

Perintah install menginstal modul ke repositori lokal Anda, di mana Anda kemudian dapat menjalankan proyek. Opsi -pl app menginformasikan plugin exec tentang modul app dan menjalankan app.App kelasnya. Tanpa menginstal, proses build gagal, karena Maven tidak dapat mengunduh dan menyelesaikan ketergantungan modul util.

Namun, cukup rumit untuk menginstal proyek di repositori lokal setiap kali sebelum dijalankan, terutama saat dalam tahap pengembangan. Untuk memudahkannya, Anda bisa langsung mengeksekusi multi-modul di Eclipse IDE tanpa melakukan langkah install.

Pelajari Kursus pengembangan perangkat lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Kesimpulan

Kami harap artikel ini membantu Anda memulai proses Multi-Modul Maven. Seperti halnya sesuatu yang baru, ini hanya tentang memahaminya terlebih dahulu. Setelah Anda memahami struktur dan fungsi dasar, Anda akan segera mengelola beberapa modul di Maven dengan lancar.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang pengembangan perangkat lunak tumpukan penuh, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak – Spesialisasi dalam Pengembangan Tumpukan Penuh yang dirancang untuk profesional yang bekerja dan menawarkan 500+ jam pelatihan yang ketat, 9 + proyek, dan tugas, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan papan atas.

Apa itu proyek multi-modul?

Multi-modul memungkinkan Anda untuk mengelompokkan artefak umum ke dalam satu modul untuk mengurangi jumlah modul yang diperlukan untuk membangun dan menyebarkan proyek. Proyek multi-modul dapat dibangun dari dua atau lebih modul dengan mendefinisikan hubungan induk-anak antara modul-modul ini. Modul induk dari proyek multi-modul disebut modul root. Modul anak dari proyek multi-modul disebut submodul. Modul root adalah landasan dari pembuatan multi-modul. Modul anak tidak dapat dibangun sendiri, mereka harus dibangun bersama dengan modul root.

Apa itu file model objek proyek di maven?

File model objek proyek (POM) adalah file yang menjelaskan sebuah proyek. Ini adalah unit kerja mendasar di mana pengembang mempublikasikan artefak ke repositori. Model objek proyek adalah file teks sederhana yang mendefinisikan proyek, mendaftar komponennya, dan mendefinisikan apa yang mereka lakukan. Model objek proyek adalah komponen kunci dari kerangka kerja manajemen proyek perangkat lunak Maven. Ini adalah jenis dokumen XML khusus yang terdiri dari proyek Maven. File pom dapat dianggap sebagai deskripsi proyek. Ini memberi tahu Maven tentang proyek tersebut serta deskripsi masing-masing modul dalam proyek, dependensinya, dan versinya. Modul adalah blok bangunan proyek Maven. Modul, dan dependensinya, digunakan untuk membangun proyek akhir.

Bagaimana cara membuat proyek multi-modul pakar?

Untuk membuat proyek multi-modul pakar, Anda perlu mendefinisikan pom induk dan memastikan semua sub-modul mewarisinya. Penting juga untuk dicatat bahwa Anda juga dapat meletakkan semua sub-modul dalam satu repositori dan mengarahkan pom induk ke sana. Proyek multi-modul maven terdiri dari pom induk dan satu atau lebih sub-modul. Pom induk dapat menentukan metadata proyek pakar multi-modul, seperti ID artefak, versi, pengemasan, dan dependensi. Sub-modul dapat mewarisi metadata induk, dan pom induk dapat menentukan konfigurasi proyek tingkat tinggi, seperti organisasi dan deskripsi proyek.