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.