Guide til Maven Archetype

1. Oversikt

En Maven-arketype er en abstraksjon av et slags prosjekt som kan instantiseres til et konkret tilpasset Maven-prosjekt. Kort oppsummert, det er en malprosjektmal der andre prosjekter blir opprettet.

Den viktigste fordelen med å bruke arketyper er å standardisere prosjektutvikling og å gjøre det mulig for utviklere å enkelt følge beste praksis mens de starter prosjektene raskere.

I denne opplæringen vil vi se på hvordan du lager en egendefinert arketype, og deretter hvordan du bruker den til å generere et Maven-prosjekt gjennom maven-archetype-plugin.

2. Maven Archetype Descriptor

Maven arketypedeskriptor er hjertet i arketypeprosjektet. Det er en XML-fil som heter arketype-metadata.xml og ligger i META-INF / maven katalog av krukken.

Det brukes til å beskrive arketypenes metadata:

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

De obligatoriske egenskaper tag brukes til å tilby eiendommer under prosjektgenerering. Dermed blir vi bedt om å gi verdier for dem, med valget om å godta standardverdien.

fileSets, derimot, brukes til å konfigurere hvilke ressurser som skal kopieres til det konkrete genererte prosjektet. En filtrert fil betyr at plassholdere vil bli erstattet med oppgitte verdier under genereringsprosessen.

Og ved å bruke pakket = ”sann” i fileSet, vi sier at valgte filer vil bli lagt til mappehierarkiet spesifisert av pakke eiendom.

Hvis vi vil generere et flermodulprosjekt, så taggen moduler kan hjelpe til med å konfigurere alle modulene i det genererte prosjektet.

Merk at denne filen handler om Archetype 2 og nyere. I versjonen 1.0.x ble filen bare kalt archetype.xml og den hadde en annen struktur.

For mer informasjon, ta en titt på de offisielle Apache-dokumentene.

3. Hvordan lage en arketype

En arketype er et vanlig Maven-prosjekt med følgende ekstra innhold:

  • src / main / resources / archetype-resources er malen ressursene kopieres fra til det nyopprettede prosjektet
  • src / main / resources / META-INF / maven / archetype-metadata.xml: er beskrivelsen som brukes til å beskrive arketypenes metadata

For å lage en arketype manuelt, kan vi starte med et nylig opprettet Maven-prosjekt, og deretter kan vi legge til ressursene nevnt ovenfor.

Eller vi kan generere det ved å bruke archetype-maven-plugin, og tilpasse deretter innholdet i arketype-ressurser katalog og arketype-metadata.xml fil.

For å generere arketypen kan vi bruke:

mvn arketype: generer -B -DarchetypeArtifactId = maven-arketype-arketype \ -DarchetypeGroupId = maven-arketype \ -DroupId = com.baeldung \ -DartifactId = test-arketype

Vi kan også lage arketypen fra et eksisterende Maven-prosjekt:

mvn arketype: create-from-project

Den genereres i mål / genererte kilder / arketype, klar til bruk.

Uansett hvordan vi har opprettet arketypen, vil vi ende opp med følgende struktur:

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

Vi kan nå begynne å bygge arketypen vår ved å sette ressurser i arketype-ressurser katalog og konfigurere dem i arketype-metadata.xml fil.

4. Å bygge arketypen

Nå er vi klare til å tilpasse arketypen vår. For høydepunktet i denne prosessen skal vi vise frem etableringen av en enkel Maven-arketype for å generere en RESTful-applikasjon basert på JAX-RS 2.1.

La oss bare kalle det maven-arketype.

4.1. Arketype emballasje

La oss starte med å endre pom.xml av arketypeprosjektet som ligger under katalogen maven-archetype:

maven-arketype

Denne typen emballasje er tilgjengelig takket være arketype-emballasje Utvidelse:

   org.apache.maven.archetype archetype-emballasje 3.0.1 

4.2. Legge til pom.xml

La oss nå lage en pom.xml filen ligger under arketype-ressurser katalog:

 $ {groupId} $ {artifactId} $ {version} krig javax.ws.rs javax.ws.rs-api 2.1 gitt 

Som vi kan se, groupId, artifactId og versjon parametriseres. De vil bli erstattet under opprettelsen av et nytt prosjekt fra denne arketypen.

Vi kan sette alt som trengs av det genererte prosjektet, som avhengigheter og plugins, i pom.xml. Her har vi lagt til JAX RS-avhengighet, da arketypen vil bli brukt til å generere RESTful-basert applikasjon.

4.3. Legge til nødvendige ressurser

Deretter kan vi legge til litt Java-kode for applikasjonen vår i arketype-ressurser / src / main / java.

En klasse for konfigurering av JAX-RS-applikasjon:

pakke $ {pakke}; // import @ApplicationPath ("$ {app-path}") offentlig klasse AppConfig utvider applikasjonen {}

Og en klasse for en pingressurs:

@Path ("ping") offentlig klasse PingResource {// ...}

Til slutt, legg serverkonfigurasjonsfilen, server.xml, i archetype-resources / src / main / config / liberty.

4.4. Konfigurere metadata

Etter å ha lagt til alle nødvendige ressurser, kan vi nå konfigurere hvilke som skal kopieres under generering gjennom arketype-metadata.xml fil.

Vi kan fortelle arketypen vår at vi vil at alle Java-kildefiler skal kopieres:

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

Her vil vi ha alle Java-filer fra src / main / java katalogen, og server.xml fil fra src / main / config / liberty, skal kopieres.

4.5. Installere arketypen

Nå som vi er ferdig med å sette alt sammen, kan vi installere arketypen ved å påkalle denne kommandoen:

mvn installere

På dette tidspunktet er arketypen registrert i filen archetype-catalog.xml, lokalisert i Maven lokale depot, og derfor klar til bruk.

5. Bruke den installerte arketypen

De maven-archetype-plugin lar brukeren opprette et Maven-prosjekt gjennom generere mål og eksisterende arketype. For mer informasjon om dette pluginet, kan du besøke hjemmesiden.

Denne kommandoen bruker dette pluginet for å generere et Maven-prosjekt fra arketypen vår:

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

Vi bør da gi GAV av arketypen vår som argumenter til maven-archetype-plugin: generer mål. Vi kan også passere GAV for det konkrete prosjektet vi ønsker å generere, ellers kan vi tilby dem i interaktiv modus.

Betongen kul-jaxrs-prøve generert prosjekt er derfor klart til å kjøres uten endringer. Så vi kan kjøre det ved å bare påkalle denne kommandoen:

mvn pakkefrihet: kjør

Vi kan da få tilgang til denne URL:

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

6. Konklusjon

I denne artikkelen har vi vist hvordan du bygger og bruker en Maven-arketype.

Vi har demonstrert hvordan du lager arketypen og deretter hvordan du konfigurerer malressursene gjennom arketype-metadata.xml fil.

Koden, som vanlig, finner du på Github.


$config[zx-auto] not found$config[zx-overlay] not found