Gids voor Maven Archetype

1. Overzicht

Een Maven-archetype is een abstractie van een soort project dat kan worden omgezet in een concreet Maven-project op maat. Kortom, het is een sjabloonprojectsjabloon waaruit andere projecten worden gemaakt.

Het belangrijkste voordeel van het gebruik van archetypen is om de projectontwikkeling te standaardiseren en om ontwikkelaars in staat te stellen eenvoudig best practices te volgen terwijl ze hun projecten sneller opstarten.

In deze zelfstudie bekijken we hoe u een aangepast archetype kunt maken en vervolgens hoe u dit kunt gebruiken om een ​​Maven-project te genereren via de maven-archetype-plugin.

2. Maven Archetype Descriptor

De Maven-archetype-descriptor is het hart van het archetype-project. Het is een XML-bestand met de naam archetype-metadata.xml en gelegen in de META-INF / maven directory van de pot.

Het wordt gebruikt om de metadata van archetypen te beschrijven:

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

De requiredProperties tag wordt gebruikt voor het leveren van eigenschappen tijdens het genereren van projecten. We zullen dus worden gevraagd om waarden voor hen op te geven, met de keuze om de standaardwaarde te accepteren.

bestandssets, aan de andere kant, worden gebruikt om te configureren welke bronnen naar het concreet gegenereerde project worden gekopieerd. Een gefilterd bestand betekent dat tijdelijke aanduidingen worden vervangen door opgegeven waarden tijdens het generatieproces.

En door te gebruiken packaged = "true" in de fileSet, we zeggen dat geselecteerde bestanden worden toegevoegd aan de maphiërarchie die wordt gespecificeerd door de pakket eigendom.

Als we een project met meerdere modules willen genereren, wordt de tag modules kan helpen om alle modules van het gegenereerde project te configureren.

Merk op dat dit bestand over Archetype 2 en hoger gaat. In versie 1.0.x heette het bestand zojuist archetype.xml en het had een andere structuur.

Bekijk voor meer informatie zeker de officiële Apache-documenten.

3. Hoe u een archetype kunt maken

Een archetype is een normaal Maven-project met de volgende extra inhoud:

  • src / main / resources / archetype-resources is de sjabloon van waaruit bronnen naar het nieuw gemaakte project worden gekopieerd
  • src / main / resources / META-INF / maven / archetype-metadata.xml: is de descriptor die wordt gebruikt om de metadata van archetypen te beschrijven

Om handmatig een archetype te maken, kunnen we beginnen met een nieuw gemaakt Maven-project en vervolgens kunnen we de bovengenoemde bronnen toevoegen.

Of we kunnen het genereren door de archetype-maven-plugin, en pas vervolgens de inhoud van het archetype-bronnen directory en archetype-metadata.xml het dossier.

Om het archetype te genereren, kunnen we gebruiken:

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

We kunnen het archetype ook creëren vanuit een bestaand Maven-project:

mvn-archetype: create-from-project

Het wordt gegenereerd in doel / gegenereerde-bronnen / archetype, klaar voor gebruik.

Ongeacht hoe we het archetype hebben gemaakt, we zullen eindigen met de volgende structuur:

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

We kunnen nu beginnen met het bouwen van ons archetype door bronnen in het archetype-bronnen directory en configureer ze in het archetype-metadata.xml het dossier.

4. Bouwen aan het archetype

Nu zijn we klaar om ons archetype aan te passen. Als hoogtepunt van dit proces gaan we de creatie van een eenvoudig Maven-archetype laten zien voor het genereren van een RESTful-applicatie op basis van JAX-RS 2.1.

Laten we het gewoon noemen maven-archetype.

4.1. Archetype verpakking

Laten we beginnen met het wijzigen van het pom.xml van het archetypeproject onder de map maven-archetype:

maven-archetype

Dit type verpakking is beschikbaar dankzij de archetype-verpakking uitbreiding:

   org.apache.maven.archetype archetype-verpakking 3.0.1 

4.2. Het toevoegen van de pom.xml

Laten we nu een pom.xml bestand dat zich onder het archetype-bronnen directory:

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

Zoals we kunnen zien, groupId, artefactId en versie zijn geparametriseerd. Ze zullen worden vervangen tijdens het maken van een nieuw project vanuit dit archetype.

We kunnen alles wat nodig is voor het gegenereerde project, zoals afhankelijkheden en plug-ins, in het pom.xml. Hier hebben we de JAX RS-afhankelijkheid toegevoegd, aangezien het archetype zal worden gebruikt voor het genereren van op RESTful gebaseerde applicaties.

4.3. Vereiste bronnen toevoegen

Vervolgens kunnen we wat Java-code voor onze applicatie toevoegen in archetype-resources / src / main / java.

Een klasse voor het configureren van de JAX-RS-applicatie:

pakket $ {pakket}; // import @ApplicationPath ("$ {app-path}") public class AppConfig breidt Application {} uit

En een klasse voor een ping-bron:

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

Plaats ten slotte het serverconfiguratiebestand, server.xml, in archetype-resources / src / main / config / liberty.

4.4. Metagegevens configureren

Nadat we alle benodigde bronnen hebben toegevoegd, kunnen we nu configureren welke zullen worden gekopieerd tijdens het genereren via het archetype-metadata.xml het dossier.

We kunnen ons archetype vertellen dat we willen dat alle Java-bronbestanden worden gekopieerd:

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

Hier willen we alle Java-bestanden van src / main / java directory en het server.xml bestand van src / main / config / liberty, gekopieerd worden.

4.5. Het archetype installeren

Nu we klaar zijn met het samenvoegen, kunnen we het archetype installeren door deze opdracht aan te roepen:

mvn installeren

Op dit punt wordt het archetype in het bestand geregistreerd archetype-catalog.xml, bevindt zich in de lokale opslagplaats van Maven en is daarom klaar voor gebruik.

5. Het geïnstalleerde archetype gebruiken

De maven-archetype-plugin stelt de gebruiker in staat om een ​​Maven-project te maken via de genereren doel en bestaand archetype. Voor meer informatie over deze plug-in kunt u de homepage bezoeken.

Deze opdracht gebruikt deze plug-in om een ​​Maven-project te genereren vanuit ons archetype:

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

We moeten dan de GAV van ons archetype als argumenten doorgeven aan de maven-archetype-plugin: genereren doel. We kunnen ook de GAV doorgeven van het concrete project dat we willen genereren, anders kunnen we ze in interactieve modus leveren.

Het beton cool-jaxrs-voorbeeld Het gegenereerde project is daarom klaar om zonder enige wijzigingen te worden uitgevoerd. We kunnen het dus uitvoeren door gewoon dit commando aan te roepen:

mvn pakket vrijheid: run

We hebben dan toegang tot deze URL:

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

6. Conclusie

In dit artikel hebben we laten zien hoe je een Maven-archetype kunt bouwen en gebruiken.

We hebben gedemonstreerd hoe u het archetype maakt en vervolgens hoe u de sjabloonbronnen configureert via de archetype-metadata.xml het dossier.

De code is, zoals gewoonlijk, te vinden op Github.