Vodič za arhetip Mavena

1. Pregled

Mavenov arhetip apstrakcija je vrste projekta koji se može pretvoriti u konkretno prilagođeni Mavenov projekt. Ukratko, to je predložak predloška projekta iz kojeg se izrađuju drugi projekti.

Glavna korist korištenja arhetipova je standardizacija razvoja projekata i omogućavanje programerima da lako slijede najbolje prakse, a brže pokreću svoje projekte.

U ovom uputstvu ćemo pogledati kako stvoriti prilagođeni arhetip, a zatim kako ga koristiti za generiranje Mavenova projekta kroz maven-archetype-plugin.

2. Maven Archetype Descriptor

Mavenov deskriptor arhetipa srce je arhetipskog projekta. To je XML datoteka s imenom arhetip-metapodaci.xml i nalazi se u META-INF / maven imenik staklenke.

Koristi se za opis metapodataka arhetipova:

   traka src / main / java ** / *. java 

The requiredSvojstva Oznaka se koristi za pružanje svojstava tijekom generiranja projekta. Stoga će se od nas tražiti da unesemo vrijednosti za njih, s izborom da prihvatimo zadanu vrijednost.

skupovi datoteka, s druge strane, koriste se za konfiguriranje koji će se resursi kopirati u konkretni generirani projekt. Filtrirana datoteka znači da će rezervirani mjesta biti zamijenjeni navedenim vrijednostima tijekom postupka generiranja.

I, pomoću zapakirano = "true" u fileSet, kažemo da će odabrane datoteke biti dodane u hijerarhiju mapa koju navodi paket imovine.

Ako želimo generirati projekt s više modula, tada oznaka modula može pomoći u konfiguriranju svih modula generiranog projekta.

Imajte na umu da je ova datoteka o Arhetipu 2 i novijim. U verziji 1.0.x datoteka je upravo pozvana arhetip.xml i imao je drugačiju strukturu.

Za više informacija svakako pogledajte službene Apache dokumente.

3. Kako stvoriti arhetip

Arhetip je uobičajeni Mavenov projekt sa sljedećim dodatnim sadržajem:

  • src / main / resources / archetype-resources je predložak iz kojeg se resursi kopiraju u novostvoreni projekt
  • src / main / resources / META-INF / maven / archetype-metadata.xml: je deskriptor koji se koristi za opis metapodataka arhetipova

Da bismo ručno stvorili arhetip, možemo započeti s novostvorenim projektom Maven, a zatim možemo dodati gore spomenute resurse.

Ili ga možemo generirati pomoću dodatak za arhetip-maven, a zatim prilagodite sadržaj arhetip-resursi imenik i arhetip-metapodaci.xml datoteka.

Za generiranje arhetipa možemo koristiti:

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

Također možemo stvoriti arhetip iz postojećeg projekta Maven:

mvn arhetip: create-from-project

Generirano je u cilj / generirani izvori / arhetip, spreman za upotrebu.

Bez obzira kako smo stvorili arhetip, na kraju ćemo dobiti sljedeću strukturu:

archetype-root / ├── pom.xml └── src └── glavni ├── java └── resursi ├── arhetip-resursi │ ├── pom.xml │ └── src └── META-INF └── maven └── arhetip-metapodaci.xml

Sada možemo početi graditi svoj arhetip stavljanjem resursa u arhetip-resursi direktorij i konfiguriranje u arhetip-metapodaci.xml datoteka.

4. Izgradnja arhetipa

Sada smo spremni prilagoditi svoj arhetip. Za vrhunac ovog postupka, predstavit ćemo stvaranje jednostavnog arhetipa Maven za generiranje RESTful aplikacije temeljene na JAX-RS 2.1.

Nazovimo to samo maven-arhetip.

4.1. Arhetipsko pakiranje

Počnimo s izmjenom datoteke pom.xml arhetipskog projekta smještenog pod maven-arhetipski direktorij:

maven-arhetip

Ova vrsta pakiranja dostupna je zahvaljujući arhetip-pakiranje produžetak:

   org.apache.maven.archetype arhetip-pakiranje 3.0.1 

4.2. Dodavanje pom.xml

Stvorimo sada pom.xml datoteka smještena pod arhetip-resursi imenik:

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

Kao što vidimo, groupId, artefaktId i verzija su parametrizirani. Oni će biti zamijenjeni tijekom stvaranja novog projekta iz ovog arhetipa.

Sve što je potrebno za generirani projekt, poput ovisnosti i dodataka, možemo staviti u pom.xml. Ovdje smo dodali ovisnost JAX RS jer će se arhetip koristiti za generiranje aplikacije temeljene na RESTful-u.

4.3. Dodavanje potrebnih resursa

Dalje, možemo dodati neki Java kôd za našu aplikaciju u arhetip-resursi / src / main / java.

Klasa za konfiguriranje JAX-RS aplikacije:

paket $ {paket}; // uvoz @ApplicationPath ("$ {app-path}") javna klasa AppConfig proširuje aplikaciju {}

I klasa za ping resurs:

@Path ("ping") javna klasa PingResource {// ...}

Konačno, stavite datoteku za konfiguraciju poslužitelja, poslužitelj.xml, u archetype-resources / src / main / config / liberty.

4.4. Konfiguriranje metapodataka

Nakon dodavanja svih potrebnih resursa, sada možemo konfigurirati koji će se kopirati tijekom generiranja putem arhetip-metapodaci.xml datoteka.

Našem arhetipu možemo reći da želimo kopirati sve izvorne datoteke Java:

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

Ovdje želimo sve Java datoteke iz src / main / java imenik i poslužitelj.xml datoteka iz src / main / config / liberty, kopirati.

4.5. Instaliranje arhetipa

Sad kad smo završili sa sastavljanjem svega, možemo instalirati arhetip pozivajući se na ovu naredbu:

mvn instalirati

U ovom je trenutku arhetip registriran u datoteci archetype-catalog.xml, nalazi se u lokalnom spremištu Maven i stoga je spreman za upotrebu.

5. Korištenje instaliranog arhetipa

The maven-archetype-plugin omogućuje korisniku stvaranje Maven projekta putem generirati cilj i postojeći arhetip. Za više informacija o ovom dodatku možete posjetiti početnu stranicu.

Ova naredba koristi ovaj dodatak za generiranje projekta Maven iz našeg arhetipa:

mvn arhetip: generiraj -DarchetypeGroupId = com.baeldung.archetypes -DarchetypeArtifactId = maven-archetype -DarchetypeVersion = 1.0-SNAPSHOT -DgroupId = com.baeldung.restful -DartifactId = cool-jaxrs-sample-SNAPSH-DversionOT

Tada bismo trebali proslijediti GAV našeg arhetipa kao argumente maven-archetype-plugin: generiraj cilj. Također možemo proći GAV konkretnog projekta koji želimo generirati, u suprotnom ih možemo pružiti u interaktivnom načinu.

Beton cool-jaxrs-uzorak generirani projekt je stoga spreman za izvođenje bez ikakvih promjena. Dakle, možemo ga pokrenuti samo pozivanjem ove naredbe:

mvn paket sloboda: trčanje

Tada možemo pristupiti ovom URL-u:

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

6. Zaključak

U ovom smo članku prikazali kako se gradi i koristi arhetip Mavena.

Demonstrirali smo kako stvoriti arhetip, a zatim kako konfigurirati resurse predloška putem arhetip-metapodaci.xml datoteka.

Kôd se, kao i obično, može naći na Githubu.