GEDOPLAN
JavaEntwicklungswerkzeugeModellierungSoftwarearchitektur

Ein eigener Maven Archetype

JavaEntwicklungswerkzeugeModellierungSoftwarearchitektur
customArch png

Ein Maven Archetype ist ein Template für Projekte. Über die Kommandozeile lassen sich so fertig, vorkonfigurierte Sourcen generieren, mit denen direkt losgelegt werden kann. Gerade in größeren Unternehmen wo häufig neue Projekte aufgesetzt werden sollen, die einer einheitlichen Struktur entsprechen, kann eine solche Archetype sehr hilfreich sein. Schauen wir uns an, wie ein Vorgehen dafür aussehen könnte.

Um einen eigenen Archetype zu erzeugen nutzen wird (*Trommelwirbel*) natürlich einen Maven Archetype, der uns die Basis-Konfiguration anlegt

mvn archetype:generate \
  -DarchetypeGroupId=org.apache.maven.archetypes \
  -DarchetypeArtifactId=maven-archetype-archetype \
  -DarchetypeVersion=1.4

Werfen wir ein Blick auf die Bestandteile (hier bereits um einige Elemente ergänzt)

archetype struct png

1. Template

Hier werden alle Dateien abgelegt, die später Teil des generierten Projektes werden sollen. Dabei haben wir natürlich die Möglichkeit Variablen zu verwenden, die später beim Aufruf übergeben werden können

quarkus.datasource.db-kind=${jdbcKind}
quarkus.datasource.jdbc.url=${jdbcUrl}
quarkus.datasource.username=${jdbcUser}
quarkus.datasource.password=${jdbcPassword}
package ${package}.repository;

import ${package}.repository.model.MessageEntity;

@ApplicationScoped
public class MessageRepository implements PanacheRepository<MessageEntity> {...}

Neben den Variablen innerhalb der Dateien können auch Ordner-Bezeichnungen als Template definiert werden. Dazu wird der Ordner wie die Variable benannt, umschlossen von einem doppelten Unterstrich:
src/main/resources/archetype-resources/src/main/resources/__dbMigrationFolder__

2. Konfiguration

In dieser Datei werden zum einen die zusätzlichen Parameter definiert, die der Archetypen bei der Generierung abfragt und zum anderen die Verarbeitung der Template-Dateien konfiguriert

<archetype-descriptor>
    <requiredProperties>
        <!--        mit default          -->
        <requiredProperty key="dbMigrationFolder">
            <defaultValue>db</defaultValue>
        </requiredProperty>
  ...
        <!--        ohne default          -->
        <requiredProperty key="jdbcUser"/>
    </requiredProperties>
    <fileSets>
        <!--        
         filtered = Verarbeitung der Variablen 
         packaged = Ordner in diesem Pfad werden automatisch im definierten
                            Package abgelegt  (Variable: package, z.B. de.gedoplan)         
         -->
        <fileSet filtered="true" packaged="true">
            <directory>src/main/java</directory>
        </fileSet>
        <fileSet filtered="true">
            <directory>src/main/resources</directory>
        </fileSet>
    </fileSets>
</archetype-descriptor>

3. Skripting

Ein optionales Groovy Script, das nach der Erstellung des Projektes läuft, um alles das zu tun, was mittels Variablen nicht möglich ist (hier ein Beispiel: Ergänzung einfacher Testdaten in Flyway-SQL-Skript)

4. IT Test

Unter test/resources/projects ist jeder Unterordner ein Integrationstest, der beim Bauen des Archtypes automatisch aufgerufen wird. Die Datei archetype.properties wird mit den entsprechenden Parametern zur Generierung des Projektes versehen

groupId=de.gedoplan
artifactId=basic-project
version=0.1-SNAPSHOT
package=de.gedoplan
jdbcUser=sa
jdbcPassword=sa
messages=Hello World,Lorem Ipsum

Mit diesen Parametern wird ein Projekt auf Basis des Archtypes generiert und anschließend mit den Dateien unterhalb des Ordners reference verglichen. Der Test ist nur erfolgreich, wenn die generierten mit den Referenz-Dateien (Struktur/Bezeichnungen/Inhalt) übereinstimmen.

5. pom.xml

pom.xml für den Archetype selber.

Fazit

Nachdem der Archtypy erfolgeich mittels mvn install bereitgestellt wurde, sollte dieser nun im Katalog der Archetypen zur Verfügung stehen und bei Auswahl die erforderlichen Parameter abfragen

> mvn archetype:generate
....
3630: local -> de.gedoplan:ArchetypeDemo (Archetype - ArchetypeDemo)

Live. In Farbe. Bei Github

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

configuration 606356 640
Jakarta EE (Java EE)

Jakarta EE 11 Deployment Descriptors

Dies sind die wichtigsten Deployment-Deskriptoren von Jakarta EE 11: META-INF/beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_1.xsd" version="4.1" bean-discovery-mode="all">…

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!