Vejledning til Maven Archetype

1. Oversigt

En Maven-arketype er en abstraktion af en slags projekt, der kan instantieres til et konkret tilpasset Maven-projekt. Kort sagt, det er en skabelonprojektskabelon, hvorfra andre projekter oprettes.

Den største fordel ved at bruge arketyper er at standardisere projektudvikling og at gøre det muligt for udviklere nemt at følge bedste praksis, mens de bootstrapper deres projekter hurtigere.

I denne vejledning ser vi på, hvordan man opretter en brugerdefineret arketype, og hvordan man bruger den til at generere et Maven-projekt gennem maven-archetype-plugin.

2. Maven Archetype Descriptor

Maven-arketypedeskriptoren er hjertet i arketypeprojektet. Det er en XML-fil med navnet arketype-metadata.xml og placeret i META-INF / maven katalog over krukken.

Det bruges til at beskrive arketypers metadata:

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

Det krævede ejendomme tag bruges til at levere egenskaber under projektgenerering. Således bliver vi bedt om at give værdier til dem med valget om at acceptere standardværdien.

fileSets, på den anden side bruges til at konfigurere, hvilke ressourcer der skal kopieres til det konkrete genererede projekt. En filtreret fil betyder, at pladsholdere erstattes med angivne værdier under genereringsprocessen.

Og ved at bruge pakket = ”sand” i fileSet, vi siger, at valgte filer vil blive føjet til mappehierarkiet specificeret af pakke ejendom.

Hvis vi vil generere et multimodulprojekt, så tagget moduler kan hjælpe med at konfigurere alle moduler i det genererede projekt.

Bemærk, at denne fil handler om Archetype 2 og derover. I version 1.0.x blev filen lige kaldt archetype.xml og det havde en anden struktur.

For mere information, se bestemt de officielle Apache-dokumenter.

3. Sådan oprettes en arketype

En arketype er et normalt Maven-projekt med følgende ekstra indhold:

  • src / main / resources / archetype-resources er skabelonen, hvorfra ressourcer kopieres til det nyoprettede projekt
  • src / main / resources / META-INF / maven / archetype-metadata.xml: er beskrivelsen, der bruges til at beskrive arketypers metadata

For at oprette en arketype manuelt kan vi starte med et nyoprettet Maven-projekt og derefter tilføje de ovennævnte ressourcer.

Eller vi kan generere det ved hjælp af archetype-maven-plugin, og tilpas derefter indholdet af arketype-ressourcer bibliotek og arketype-metadata.xml fil.

For at generere arketypen kan vi bruge:

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

Vi kan også oprette arketypen fra et eksisterende Maven-projekt:

mvn arketype: create-from-project

Det genereres i mål / genererede kilder / arketype, klar til brug.

Uanset hvordan vi har oprettet arketypen, ender vi med følgende struktur:

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

Vi kan nu begynde at opbygge vores arketype ved at lægge ressourcer i arketype-ressourcer mappe og konfigurere dem i arketype-metadata.xml fil.

4. Opbygning af arketypen

Nu er vi klar til at tilpasse vores arketype. For højdepunktet i denne proces skal vi fremvise oprettelsen af ​​en simpel Maven-arketype til generering af en RESTful applikation baseret på JAX-RS 2.1.

Lad os bare kalde det maven-arketype.

4.1. Arketype emballage

Lad os starte med at ændre pom.xml af arketypeprojektet under mappen maven-archetype:

maven-arketype

Denne type emballage fås takket være arketype-emballage udvidelse:

   org.apache.maven.archetype archetype-emballage 3.0.1 

4.2. Tilføjelse af pom.xml

Lad os nu oprette en pom.xml fil placeret under arketype-ressourcer vejviser:

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

Som vi kan se, groupId, artefaktId og version er parametreret. De vil blive udskiftet under oprettelsen af ​​et nyt projekt fra denne arketype.

Vi kan placere alt det nødvendige af det genererede projekt, som afhængigheder og plugins, i pom.xml. Her har vi tilføjet JAX RS-afhængighed, da arketypen vil blive brugt til at generere RESTful-baseret applikation.

4.3. Tilføjelse af krævede ressourcer

Dernæst kan vi tilføje nogle Java-koder til vores applikation i archetype-resources / src / main / java.

En klasse til konfiguration af JAX-RS-applikation:

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

Og en klasse for en ping-ressource:

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

Til sidst skal du sætte serverkonfigurationsfilen, server.xml, i archetype-resources / src / main / config / liberty.

4.4. Konfiguration af metadata

Efter at have tilføjet alle nødvendige ressourcer kan vi nu konfigurere, hvilke der skal kopieres under generation gennem arketype-metadata.xml fil.

Vi kan fortælle vores arketype, at vi ønsker, at alle Java-kildefiler skal kopieres:

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

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

4.5. Installation af arketypen

Nu hvor vi er færdige med at sætte det hele sammen, kan vi installere arketypen ved at påkalde denne kommando:

mvn installere

På dette tidspunkt registreres arketypen i filen archetype-catalog.xml, placeret i Maven lokale arkiv og derfor klar til brug.

5. Brug af den installerede arketype

Det maven-archetype-plugin giver brugeren mulighed for at oprette et Maven-projekt gennem frembringe mål og eksisterende arketype. For mere information om dette plugin, kan du besøge hjemmesiden.

Denne kommando bruger dette plugin til at generere et Maven-projekt fra vores arketype:

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

Vi skal derefter videregive GAV for vores arketype som argumenter til maven-archetype-plugin: generer mål. Vi kan også passere GAV'en for det konkrete projekt, som vi vil generere, ellers kan vi levere dem i interaktiv tilstand.

Betonen cool-jaxrs-prøve genereret projekt er derfor klar til at køre uden ændringer. Så vi kan køre det ved blot at påkalde denne kommando:

mvn-pakkefrihed: kør

Vi kan derefter få adgang til denne URL:

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

6. Konklusion

I denne artikel har vi vist, hvordan man bygger og bruger en Maven-arketype.

Vi har demonstreret, hvordan man opretter arketypen, og hvordan vi konfigurerer skabelonressourcerne gennem arketype-metadata.xml fil.

Koden findes som sædvanlig på Github.