Panduan untuk Pola Dasar Maven

1. Ikhtisar

Pola dasar Maven adalah abstraksi dari jenis proyek yang dapat dipakai menjadi proyek Maven yang disesuaikan secara konkret. Singkatnya, ini adalah template proyek template dari mana proyek lain dibuat .

Manfaat utama menggunakan arketipe adalah untuk menstandarkan pengembangan proyek dan memungkinkan pengembang untuk dengan mudah mengikuti praktik terbaik sambil melakukan bootstrap proyek mereka lebih cepat.

Dalam tutorial ini, kita akan melihat bagaimana membuat arketipe khusus dan kemudian bagaimana menggunakannya untuk menghasilkan proyek Maven melalui maven-archetype-plugin.

2. Deskriptor Pola Dasar Maven

Deskriptor arketipe Maven adalah inti dari proyek arketipe . Ini adalah file XML bernama archetype-metadata.xml dan terletak di direktori META-INF / maven dari jar.

Ini digunakan untuk menggambarkan metadata arketipe:

   bar     src/main/java  **/*.java       

The requiredProperties tag digunakan untuk menyediakan properti selama generasi proyek. Jadi, kita akan diminta untuk memberikan nilai untuk mereka, dengan pilihan untuk menerima nilai default.

fileSets, di sisi lain, digunakan untuk mengkonfigurasi sumber daya mana yang akan disalin ke dalam proyek yang dihasilkan secara konkret. File yang difilter berarti placeholder akan diganti dengan nilai yang diberikan selama proses pembuatan.

Dan, dengan menggunakan packaged = ”true” di fileSet , kami mengatakan bahwa file yang dipilih akan ditambahkan ke hierarki folder yang ditentukan oleh properti paket .

Jika kita ingin membuat proyek multi-modul, maka modul tag dapat membantu mengonfigurasi semua modul dari proyek yang dihasilkan.

Perhatikan bahwa file ini tentang Archetype 2 dan di atasnya. Pada versi 1.0.x, file tersebut hanya disebut archetype.xml dan memiliki struktur yang berbeda.

Untuk informasi lebih lanjut, lihat dokumen resmi Apache.

3. Cara Membuat Pola Dasar

Pola dasar adalah proyek Maven normal dengan konten tambahan berikut :

  • src / main / resources / archetype-resources adalah template tempat resource disalin ke proyek yang baru dibuat
  • src / main / resources / META-INF / maven / archetype-metadata.xml : adalah deskriptor yang digunakan untuk mendeskripsikan metadata archetypes

Untuk membuat arketipe secara manual, kita dapat memulai dengan proyek Maven yang baru dibuat dan kemudian kita dapat menambahkan sumber daya yang disebutkan di atas.

Atau, kita dapat membuatnya dengan menggunakan archetype-maven-plugin, dan kemudian menyesuaikan konten direktori archetype-resources dan file archetype-metadata.xml .

Untuk menghasilkan arketipe, kita dapat menggunakan:

mvn archetype:generate -B -DarchetypeArtifactId=maven-archetype-archetype \ -DarchetypeGroupId=maven-archetype \ -DgroupId=com.baeldung \ -DartifactId=test-archetype

Kita juga dapat membuat arketipe dari proyek Maven yang sudah ada:

mvn archetype:create-from-project

Ini dihasilkan dalam target / generated-sources / arketipe, siap digunakan.

Tidak peduli bagaimana kita membuat arketipe, kita akan berakhir dengan struktur berikut:

archetype-root/ ├── pom.xml └── src └── main ├── java └── resources ├── archetype-resources │   ├── pom.xml │   └── src └── META-INF └── maven └── archetype-metadata.xml

Sekarang kita dapat mulai membangun arketipe kita dengan meletakkan sumber daya di direktori arketipe-sumber daya dan mengonfigurasinya di file archetype-metadata.xml .

4. Membangun Pola Dasar

Sekarang kami siap untuk menyesuaikan pola dasar kami. Untuk sorotan dari proses ini, kami akan memamerkan pembuatan arketipe Maven sederhana untuk menghasilkan aplikasi RESTful berdasarkan JAX-RS 2.1.

Sebut saja arketipe maven .

4.1. Kemasan Pola Dasar

Mari kita mulai dengan memodifikasi pom.xml proyek arketipe yang terletak di bawah direktori maven-archetype :

maven-archetype

Jenis kemasan ini tersedia berkat ekstensi pengemasan arketipe :

   org.apache.maven.archetype archetype-packaging 3.0.1    

4.2. Menambahkan pom.xml

Sekarang mari buat file pom.xml yang terletak di bawah direktori archetype-resources :

 ${groupId} ${artifactId} ${version} war   javax.ws.rs javax.ws.rs-api 2.1 provided   

Seperti yang bisa kita lihat, groupId, artifactId dan versi diparameterisasi. Mereka akan diganti selama pembuatan proyek baru dari arketipe ini.

Kita dapat meletakkan semua yang dibutuhkan oleh proyek yang dihasilkan, seperti dependensi dan plugin, di pom.xml . Di sini, kami telah menambahkan ketergantungan JAX RS karena arketipe akan digunakan untuk menghasilkan aplikasi berbasis RESTful.

4.3. Menambahkan Sumber Daya yang Diperlukan

Selanjutnya, kita dapat menambahkan beberapa kode Java untuk aplikasi kita di archetype-resources / src / main / java .

Kelas untuk mengkonfigurasi aplikasi JAX-RS:

package ${package}; // import @ApplicationPath("${app-path}") public class AppConfig extends Application { }

Dan kelas untuk sumber daya ping:

@Path("ping") public class PingResource{ //... }

Terakhir, letakkan file konfigurasi server, server.xml , di archetype-resources / src / main / config / liberty .

4.4. Mengonfigurasi Metadata

Setelah menambahkan semua sumber daya yang diperlukan, sekarang kita dapat mengonfigurasi mana yang akan disalin selama pembuatan melalui file archetype-metadata.xml .

Kita dapat memberi tahu arketipe kita bahwa kita ingin semua file sumber Java disalin:

    src/main/java  **/*.java    src/main/config/liberty  server.xml    

Di sini, kami ingin semua file Java dari direktori src / main / java , dan file server.xml dari src / main / config / liberty, disalin.

4.5. Memasang Pola Dasar

Sekarang setelah kita selesai menyatukan semuanya, kita dapat menginstal arketipe dengan menjalankan perintah ini:

mvn install

Pada titik ini, arketipe terdaftar di file archetype-catalog.xml, terletak di repositori lokal Maven, dan oleh karena itu siap digunakan.

5. Menggunakan Archetype yang Terinstal

The maven-pola dasar-plugin memungkinkan pengguna untuk membuat sebuah proyek Maven melalui menghasilkan gol dan pola dasar yang ada . Untuk informasi lebih lanjut tentang plugin ini, Anda dapat mengunjungi beranda.

Perintah ini menggunakan plugin ini untuk menghasilkan proyek Maven dari arketipe kami:

mvn archetype:generate -DarchetypeGroupId=com.baeldung.archetypes -DarchetypeArtifactId=maven-archetype -DarchetypeVersion=1.0-SNAPSHOT -DgroupId=com.baeldung.restful -DartifactId=cool-jaxrs-sample -Dversion=1.0-SNAPSHOT

Kita kemudian harus meneruskan GAV dari arketipe kita sebagai argumen ke maven-archetype-plugin: generate goal. Kami juga dapat mengirimkan GAV dari proyek konkret yang ingin kami hasilkan, jika tidak, kami dapat menyediakannya dalam mode interaktif.

Proyek beton yang dihasilkan dari sampel jaxrs siap untuk dijalankan tanpa perubahan apa pun. Jadi, kita dapat menjalankannya hanya dengan menjalankan perintah ini:

mvn package liberty:run

Kami kemudian dapat mengakses URL ini:

//localhost:9080/cool-jaxrs-sample//ping

6. Kesimpulan

Di artikel ini, kami telah memamerkan cara membuat dan menggunakan arketipe Maven.

Kami telah mendemonstrasikan cara membuat arketipe dan kemudian cara mengonfigurasi sumber daya template melalui file archetype-metadata.xml .

Kode tersebut, seperti biasa, dapat ditemukan di Github.