Leitfaden zum Maven-Archetyp

1. Übersicht

Ein Maven-Archetyp ist eine Abstraktion einer Art Projekt, das in ein konkretes benutzerdefiniertes Maven-Projekt instanziiert werden kann. Kurz gesagt, es ist eine Vorlage Projektvorlage, aus der andere Projekte erstellt werden .

Der Hauptvorteil der Verwendung von Archetypen besteht darin, die Projektentwicklung zu standardisieren und Entwicklern zu ermöglichen, Best Practices einfach zu befolgen und ihre Projekte schneller zu booten.

In diesem Tutorial erfahren Sie, wie Sie einen benutzerdefinierten Archetyp erstellen und anschließend ein Maven-Projekt über das Maven-Archetyp-Plugin generieren .

2. Maven Archetype Descriptor

Der Maven-Archetyp-Deskriptor ist das Herzstück des Archetyp-Projekts . Es handelt sich um eine XML-Datei mit dem Namen archetype-metadata.xml, die sich im Verzeichnis META-INF / maven des JAR befindet.

Es wird verwendet, um die Metadaten der Archetypen zu beschreiben:

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

Das Tag " requiredProperties" wird zum Bereitstellen von Eigenschaften während der Projekterstellung verwendet. Daher werden wir aufgefordert, Werte für sie anzugeben und den Standardwert zu akzeptieren.

fileSets hingegen werden verwendet, um zu konfigurieren, welche Ressourcen in das konkret generierte Projekt kopiert werden. Eine gefilterte Datei bedeutet, dass Platzhalter während des Generierungsprozesses durch bereitgestellte Werte ersetzt werden.

Und durch die Verwendung verpackt =“true“ in der Dateigruppe , wir sagen , dass ausgewählte Dateien werden in der Ordnerhierarchie von der angegebenen hinzugefügt werden Paket - Eigenschaft.

Wenn Sie ein Projekt mit mehreren Modulen generieren möchten, können die Tag- Module dazu beitragen, alle Module des generierten Projekts zu konfigurieren.

Beachten Sie, dass es sich bei dieser Datei um Archetyp 2 und höher handelt. In der Version 1.0.x hieß die Datei nur archetype.xml und hatte eine andere Struktur.

Weitere Informationen finden Sie auf jeden Fall in den offiziellen Apache-Dokumenten.

3. So erstellen Sie einen Archetyp

Ein Archetyp ist ein normales Maven-Projekt mit dem folgenden zusätzlichen Inhalt :

  • src / main / resources / archetype-resources ist die Vorlage, aus der Ressourcen in das neu erstellte Projekt kopiert werden
  • src / main / resources / META-INF / maven / archetype-metadata.xml : ist der Deskriptor, der zur Beschreibung der Metadaten der Archetypen verwendet wird

Um einen Archetyp manuell zu erstellen, können wir mit einem neu erstellten Maven-Projekt beginnen und dann die oben genannten Ressourcen hinzufügen.

Oder wir können es mithilfe des archetype-maven-plugins generieren und dann den Inhalt des archetype-resources- Verzeichnisses und der archetype-metadata.xml- Datei anpassen .

Um den Archetyp zu generieren, können wir verwenden:

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

Wir können den Archetyp auch aus einem vorhandenen Maven-Projekt erstellen:

mvn archetype:create-from-project

Es wird im Ziel / generierten-Quellen / Archetyp generiert und kann verwendet werden.

Unabhängig davon, wie wir den Archetyp erstellt haben, erhalten wir die folgende Struktur:

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

Wir können jetzt mit dem Erstellen unseres Archetyps beginnen, indem wir Ressourcen in das Verzeichnis archetype-resources legen und in der Datei archetype-metadata.xml konfigurieren .

4. Erstellen des Archetyps

Jetzt können wir unseren Archetyp anpassen. Als Höhepunkt dieses Prozesses werden wir die Erstellung eines einfachen Maven-Archetyps zum Generieren einer RESTful-Anwendung auf Basis von JAX-RS 2.1 vorstellen.

Nennen wir es einfach Maven-Archetyp .

4.1. Archetyp-Verpackung

Beginnen wir mit der Änderung der Datei pom.xml des Archetypprojekts im Verzeichnis maven-archetype :

maven-archetype

Diese Art der Verpackung ist dank der Archetyp-Verpackungserweiterung verfügbar :

   org.apache.maven.archetype archetype-packaging 3.0.1    

4.2. Hinzufügen der Datei pom.xml

Lassen Sie uns nun eine pom.xml- Datei erstellen, die sich im Verzeichnis archetype-resources befindet :

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

Wie wir sehen können, werden groupId, artefaktId und version parametrisiert. Sie werden bei der Erstellung eines neuen Projekts aus diesem Archetyp ersetzt.

Wir können alles, was für das generierte Projekt benötigt wird, wie Abhängigkeiten und Plugins, in die Datei pom.xml einfügen . Hier haben wir die JAX RS-Abhängigkeit hinzugefügt, da der Archetyp zum Generieren einer RESTful-basierten Anwendung verwendet wird.

4.3. Erforderliche Ressourcen hinzufügen

Als nächstes können wir Java-Code für unsere Anwendung in archetype-resources / src / main / java hinzufügen .

Eine Klasse zum Konfigurieren der JAX-RS-Anwendung:

package ${package}; // import @ApplicationPath("${app-path}") public class AppConfig extends Application { }

Und eine Klasse für eine Ping-Ressource:

@Path("ping") public class PingResource{ //... }

Legen Sie abschließend die Serverkonfigurationsdatei server.xml in archetype-resources / src / main / config / liberty ab .

4.4. Metadaten konfigurieren

Nachdem wir alle erforderlichen Ressourcen hinzugefügt haben, können wir jetzt konfigurieren, welche während der Generierung über die Datei archetype-metadata.xml kopiert werden.

Wir können unserem Archetyp mitteilen, dass alle Java-Quelldateien kopiert werden sollen:

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

Hier möchten wir, dass alle Java-Dateien aus dem Verzeichnis src / main / java und die Datei server.xml aus dem Verzeichnis src / main / config / liberty kopiert werden.

4.5. Archetyp installieren

Nachdem wir alles zusammengestellt haben, können wir den Archetyp installieren, indem wir diesen Befehl aufrufen:

mvn install

Zu diesem Zeitpunkt ist der Archetyp in der Datei archetype-catalog.xml registriert , die sich im lokalen Maven-Repository befindet und daher einsatzbereit ist.

5. Verwenden des installierten Archetyps

Das Maven-Archetyp-Plugin ermöglicht es dem Benutzer, ein Maven-Projekt über das Generierungsziel und den vorhandenen Archetyp zu erstellen . Weitere Informationen zu diesem Plugin finden Sie auf der Homepage.

Dieser Befehl verwendet dieses Plugin, um ein Maven-Projekt aus unserem Archetyp zu generieren:

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

Wir sollten dann die GAV unseres Archetyps als Argumente an das Maven-Archetyp-Plugin übergeben: Ziel generieren . Wir können auch den GAV des konkreten Projekts übergeben, das wir generieren möchten, andernfalls können wir sie im interaktiven Modus bereitstellen.

Das konkrete Cool-Jaxrs-Sample- generierte Projekt ist daher ohne Änderungen betriebsbereit. Wir können es also ausführen, indem wir einfach diesen Befehl aufrufen:

mvn package liberty:run

Wir können dann auf diese URL zugreifen:

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

6. Fazit

In diesem Artikel haben wir gezeigt, wie ein Maven-Archetyp erstellt und verwendet wird.

Wir haben gezeigt, wie der Archetyp erstellt und anschließend die Vorlagenressourcen über die Datei archetype-metadata.xml konfiguriert werden.

Der Code ist wie üblich auf Github zu finden.