Das Maven Resources Plugin wird häufig zum Filtern von Dateien verwendet, wodurch Platzhalter in Ressourcendateien durch in der pom.xml definierte Werte ersetzt werden können. Im Kontext der Ausgabe der Versionsnummer kann dieses Plugin dynamische Projekteigenschaften (Version, artifactId, groupId) während des Build-Prozesses direkt in Ressourcendateien einfügen. Die Maven-Koordinaten bestehen aus groupId, artifactId und version.
Maven verwendet Konventionen für die Namensgebung von Koordinaten. Die groupId identifiziert eindeutig eine Projektgruppe über alle anderen Gruppen hinweg. Sie sollte den Java-Paketnamensregeln folgen, beginnend mit einem umgekehrten Domainnamen, den Sie kontrollieren. Die artifactId ist der Name, unter dem das Projekt bekannt ist. Zusammen mit der groupId erzeugt sie einen Schlüssel, der dieses Projekt von allen anderen Projekten unterscheidet. Die version gibt an, um welche Version es sich handelt.
Um das Maven Resources Plugin für die Filterung zu verwenden, muss zuerst der Abschnitt
So aktualisieren Sie die Datei pom.xml, um die Ressourcenfilterung zu aktivieren:
1 2 3 4 5 6 7 8 |
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> |
Diese Konfiguration weist Maven an, alle Dateien im Verzeichnis src/main/resources zu verarbeiten und eine Filterung anzuwenden, um alle Platzhalter durch die entsprechenden Werte aus den Maven-Projekteigenschaften (z. B. ${project.version}) zu ersetzen.
Die Zeile
Als Nächstes wird eine Ressourcendatei (z. B. version.txt) im Verzeichnis src/main/resources erstellt. Diese Datei kann Platzhalter wie ${project.version} enthalten, die während des Build-Prozesses dynamisch durch die in der Datei pom.xml definierte Versionsnummer ersetzt werden.
Erstellen Sie beispielsweise eine Datei version.txt mit folgendem Inhalt:
1 2 3 |
Version: ${project.version} ArtifactId: ${project.artifactId} GroupId: ${project.groupId} |
Bauen des Projekts
Nachdem die Konfiguration eingerichtet wurde, kann das Projekt mit dem Maven-Befehl erstellt werden:
$ mvn clean package
Nach dem Erstellen des Projekts befindet sich die gefilterte Datei version.txt standardmäßig im Verzeichnis target/classes/. Die Platzhalter ${project.version}, ${project.artifactId} und ${project.groupId} werden durch die in der Datei pom.xml angegebenen Werte ersetzt:
1 2 3 |
Version: 0.0.1-SNAPSHOT ArtifactId: de.wenzlaff.twki GroupId: de.wenzlaff.twki |
Es ist auch möglich, benutzerdefinierte Eigenschaften im
1 2 3 |
<properties> <meineEigenschaft>Mein Wert</meineEigenschaft> </properties> |
Diese Eigenschaft kann dann in einer Ressourcendatei wie folgt verwendet werden:
1 |
Meine Eigenschaft: ${meineEigenschaft} |
Also eine pom.xml enthält z.B.
1 2 3 |
<properties> <ki>open-ai</ki> </properties> |
1 2 3 4 |
Version: ${project.version} ArtifactId: ${project.artifactId} GroupId: ${project.groupId} Verwendete KI: ${ki} |
ergibt:
1 2 3 4 |
Version: 0.0.1-SNAPSHOT ArtifactId: de.wenzlaff.twki GroupId: de.wenzlaff.twki Verwendete KI: open-ai |