Blog

Organisieren von Archetypen

Wilfred Springer

Aktualisiert Oktober 23, 2025
4 Minuten

Maven Archetypen sind eine hervorragende Möglichkeit, Instanzen eines bestimmten Projekttyps zu erstellen, ohne dass Sie alle Besonderheiten und Details kennen oder sich darüber Gedanken machen müssen. (Und die neuesten Versionen des Maven Archtetype Plugins sind sogar noch besser, als ich dachte: irgendwann wurde die Möglichkeit eingeführt, Velocity-Vorlagen für die Parametrisierung der Ausgabe zu verwenden. Schön!)

Da einige der Abhängigkeiten von Preon noch nicht im zentralen Maven-Repository enthalten sind, habe ich mich entschlossen, einen Archetyp eines Maven-Projekts zu erstellen, um sicherzustellen, dass alle externen Repositories korrekt eingestellt sind und Sie sich nicht darum kümmern müssen. Aber dann stellt sich die Frage: Wie halten Sie alle Ihre Archetypen organisiert? Die Erstellung eines Projekts aus einem Archetyp ist heutzutage ziemlich einfach, aber entweder sollten die Archetypen auf dem System Ihres Benutzers vorhanden sein oder sie sollten den Speicherort einer Katalogdatei angeben. Diese Katalogdatei wird jedoch Verweise auf die Version Ihrer Archetypen enthalten. Wie können Sie sicherstellen, dass diese Versionen korrekt sind? Und wie stellen Sie sicher, dass Ihr Archetyp-Katalog online verfügbar ist, ohne dass Sie ihn immer wieder manuell bereitstellen müssen? Ich konnte keine wirkliche Richtlinie für die Verwaltung all dieser Dinge finden, also habe ich Folgendes getan:

Organisieren von Archetypen

Modul für Archetypen Zunächst einmal habe ich beschlossen, ein Modul für alle meine Archetypen zu haben, wie in der Abbildung oben dargestellt. Ein eigenes Modul, das alle meine Archetypen organisiert, ermöglicht es mir, bestimmte Richtlinien für meine Archetypen festzulegen, und es erlaubt mir auch, meine Katalogdatei an einem sinnvollen Ort zu speichern. (Der Katalog enthält Verweise auf alle einzelnen Archetypen.) Parametrisierte Datei archetype-catalog.xml Ich möchte nun, dass mein Katalog der Archetypen Verweise auf die entsprechenden Versionen der Archetypen enthält. Eine Möglichkeit, dies zu erreichen, besteht darin, die Datei sorgfältig von Hand zu aktualisieren, sobald eine neue Version des Archetyps verfügbar ist. Aber das ist auch ziemlich langweilig und fehleranfällig. Daher habe ich stattdessen die Datei archetype-catalog.xml in src/main/resources abgelegt und dafür gesorgt, dass das Maven Resources Plugin die Variablenreferenzen durch die entsprechenden Werte ersetzt. [xml] <Archetyp-Katalog> <Archetypen> <Archetyp> <groupId>nl.flotsam.preon.archetypes</groupId> <artifactId>preon-simple-archetype</artifactId> <version>${project.version}</version> <Repository>https://preon.flotsam.nl/archetypes </repository&gt; <description>Einfaches Preon-Projekt, mit Abhängigkeiten zu allem, was benötigt wird.</description> </archetype> </archetypes> </archetype-catalog> [/xml] Anhängen von Katalogdateien Wir haben jetzt also Katalogdateien mit korrekten Versionsverweisen, aber es ist immer noch unmöglich, sie von einem bestimmten Ort herunterzuladen. Ich habe über eine Lösung nachgedacht und zunächst erwogen, sie als Site-Ressourcen einzubinden. Aber dann wurde mir klar, dass ich diese Dateien auch als neue Artefakte anhängen könnte. Das hat einige interessante Nebeneffekte. Einer davon ist, dass sie bei jeder neuen Bereitstellung meines Projekts auch in das Maven-Repository hochgeladen werden. Genau das, was ich wollte. Ich habe also eine kleine Konfiguration hinzugefügt, um sicherzustellen, dass die Dateien angehängt werden. [xml] <Plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <Version>1.3</version> <vererbt>false</vererbt> <Hinrichtungen> <Ausführung> <id>attach-artifacts</id> <Phase>Paket</Phase> <Ziele> <Ziel>Anhang-Artefakt</Ziel> </goals> <Konfiguration> <Artefakte> <Artefakt> <Datei>target/classes/archetype-catalog.xml</Datei> <Typ>xml</Typ> <Klassifikator>Katalog</Klassifikator> </artifact> </artifacts> </configuration> </execution> </executions> </plugin> [/xml] Panik: SNAPSHOT-Versionen! Bis jetzt funktioniert alles ziemlich reibungslos. Doch dann taucht ein Problem auf: Wenn Sie Dateien anhängen und sie in einem Snapshot-Repository bereitstellen, erhalten die Versionsnummern ein Suffix, das die Versionsnummer für diesen bestimmten Build eindeutig macht. Das funktioniert mit den üblichen Artefakten problemlos, aber nicht mit dem Maven Archetype Plugin. Denken Sie daran, dass die Datei archetype-catalog.xml - obwohl sie jetzt die vom Maven Resources Plugin korrekt generierten Versionen enthält - immer noch Versionsreferenzen ohne das eindeutige Build-Suffix enthält . Das Maven Deploy Plugin wird jedoch Versionen hochladen, die das eindeutige Build-Suffix enthalten. Um dieses Problem zu lösen, habe ich den Abschnitt distributionManagement in der Datei pom.xml des Moduls preon-archetypes ersetzt und dafür gesorgt, dass bei den snapshotRepository-Einstellungen die uniqueVersion auf false gesetzt ist. Dadurch entfällt das eindeutige Suffix. Allerdings wird dadurch auch Ihr Snapshot-Repository durcheinander gebracht. Um Ordnung zu schaffen, werden die Archetypen in einem eigenen Repository bereitgestellt: dem Archetypes-Repository. Erledigt? Wenn Sie all diese Arbeit erledigt haben, ist es ziemlich einfach, ein Projekt aus einem der Archetypen zu erstellen:

[source]
mvn -DarchetypeCatalog=https://preon.flotsam.nl/archetypes/nl/flotsam/preon/archetypes/preon-archetypes/1.1-SNAPSHOT/preon-archetypes-1.1-SNAPSHOT-catalog.xml archetype:generate
[/source]

Das war's schon. Danach können Sie den spezifischen Archetyp auswählen, den Sie instanziieren möchten, und Maven kümmert sich um den Rest.

Verfasst von

Wilfred Springer

Contact

Let’s discuss how we can support your journey.