Panduan untuk Maven Archetype

1. Gambaran keseluruhan

Arketipe Maven adalah pengabstrakan sejenis projek yang dapat dijadikan projek Maven yang disesuaikan secara konkrit. Ringkasnya, ini adalah templat projek templat dari mana projek lain dibuat .

Manfaat utama menggunakan arketipe adalah untuk menyeragamkan pembangunan projek dan membolehkan pemaju mengikuti amalan terbaik dengan mudah sambil memacu projek mereka dengan lebih pantas.

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

2. Penerangan Arketipe Maven

Perihal pola dasar Maven adalah nadi projek arketipe . Ini adalah fail XML bernama archetype-metadata.xml dan terletak di direktori META-INF / maven jar.

Ia digunakan untuk menerangkan metadata arketipe:

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

The requiredProperties tag digunakan untuk menyediakan sifat selama-projek. Oleh itu, kami akan diminta memberikan nilai untuknya, dengan pilihan untuk menerima nilai lalai.

fileSet, sebaliknya, digunakan untuk mengkonfigurasi sumber mana yang akan disalin ke dalam projek yang dihasilkan konkrit. Fail yang difilter bermaksud bahawa placeholder akan diganti dengan nilai yang diberikan semasa proses pembuatan.

Dan, dengan menggunakan paket = "true" di fileSet , kami mengatakan bahawa fail yang dipilih akan ditambahkan ke hierarki folder yang ditentukan oleh properti paket .

Sekiranya kita ingin menghasilkan projek multi-modul, maka modul tag dapat membantu mengkonfigurasi semua modul projek yang dihasilkan.

Perhatikan bahawa fail ini adalah mengenai Arkib Jenis 2 dan ke atas. Dalam versi 1.0.x, fail tersebut hanya disebut archetype.xml dan mempunyai struktur yang berbeza.

Untuk maklumat lebih lanjut, lihat dokumen rasmi Apache.

3. Cara Membuat Archetype

Archetype adalah projek Maven biasa dengan kandungan tambahan berikut :

  • src / main / resources / archetype-resources adalah templat dari mana sumber disalin ke projek yang baru dibuat
  • src / main / resources / META-INF / maven / archetype-metadata.xml : adalah deskriptor yang digunakan untuk menggambarkan metadata arketipe

Untuk membuat pola dasar secara manual, kita dapat memulakan dengan projek Maven yang baru dibuat dan kemudian kita dapat menambahkan sumber yang disebutkan di atas.

Atau, kita boleh membuatnya dengan menggunakan plug-archetype-maven, dan kemudian menyesuaikan kandungan direktori sumber-sumber dan fail 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

Kami juga dapat membuat pola dasar dari projek Maven yang ada:

mvn archetype:create-from-project

Ia dihasilkan dalam target / dihasilkan-sumber / arketipe, siap digunakan.

Tidak kira bagaimana kita membuat arkib, kita akan mempunyai struktur berikut:

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

Kita sekarang boleh mula membangun jenis arkib kita dengan meletakkan sumber daya dalam direktori sumber-sumber dan mengkonfigurasinya dalam fail archetype-metadata.xml .

4. Membina Arkib

Sekarang kita sudah bersedia untuk menyesuaikan bentuk dasar kita. Untuk kemuncak proses ini, kami akan mempamerkan penciptaan pola dasar Maven sederhana untuk menghasilkan aplikasi RESTful berdasarkan JAX-RS 2.1.

Mari kita sebut sebagai maven-archetype .

4.1. Pembungkusan Jenis Arkib

Mari kita mulakan dengan mengubah suai pom.xml projek arketipe yang terletak di bawah direktori maven-archetype :

maven-archetype

Jenis pembungkusan ini tersedia berkat peluasan pembungkusan pola dasar :

   org.apache.maven.archetype archetype-packaging 3.0.1    

4.2. Menambah pom.xml

Sekarang mari kita buat fail pom.xml yang terletak di bawah direktori sumber-sumber :

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

Seperti yang dapat kita lihat, groupId, artifactId dan versi di parameter. Mereka akan diganti semasa membuat projek baru dari pola dasar ini.

Kita boleh meletakkan semua yang diperlukan oleh projek yang dihasilkan, seperti pergantungan dan pemalam, di pom.xml . Di sini, kami telah menambahkan kebergantungan JAX RS kerana jenis dasar akan digunakan untuk menghasilkan aplikasi berasaskan RESTful.

4.3. Menambah Sumber yang Diperlukan

Seterusnya, kita dapat menambahkan beberapa kod Java untuk aplikasi kita dalam 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 ping:

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

Akhirnya, letakkan fail konfigurasi pelayan, server.xml , dalam archetype-resources / src / main / config / liberty .

4.4. Mengkonfigurasi Metadata

Setelah menambahkan semua sumber daya yang diperlukan, kita sekarang dapat mengkonfigurasi mana yang akan disalin selama generasi melalui fail archetype-metadata.xml

Kami dapat memberitahu jenis dasar kami bahawa kami mahu semua fail sumber Java disalin:

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

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

4.5. Memasang Archetype

Setelah selesai menyatukannya, kita dapat memasang jenis arket dengan memanggil arahan ini:

mvn install

Pada ketika ini, archetype didaftarkan dalam file archetype-catalog.xml, yang terletak di repositori tempatan Maven, dan oleh itu siap untuk digunakan.

5. Menggunakan Archetype yang Dipasang

The Maven-pola asas-plugin membolehkan pengguna untuk mewujudkan satu projek Maven melalui menjana matlamat dan pola asas yang sedia ada . Untuk maklumat lebih lanjut mengenai pemalam ini, anda boleh mengunjungi laman utama.

Perintah ini menggunakan plugin ini untuk menghasilkan projek Maven dari jenis dasar 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 menyampaikan GAV dari pola dasar kita sebagai argumen ke maven-archetype-plugin: menghasilkan matlamat. Kami juga dapat meluluskan GAV projek konkrit yang ingin kami hasilkan, jika tidak, kami dapat menyediakannya dalam mod interaktif.

Oleh itu, projek konkrit -jaxrs-sampel yang dihasilkan konkrit siap dijalankan tanpa sebarang perubahan. Oleh itu, kita boleh menjalankannya dengan hanya menggunakan perintah ini:

mvn package liberty:run

Kami kemudian boleh mengakses URL ini:

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

6. Kesimpulannya

Dalam artikel ini, kami telah menunjukkan cara membina dan menggunakan pola dasar Maven.

Kami telah menunjukkan cara membuat arkib dan kemudian bagaimana mengkonfigurasi sumber templat melalui fail archetype-metadata.xml .

Kodnya, seperti biasa, terdapat di Github.