{"id":22614,"date":"2025-04-01T01:46:40","date_gmt":"2025-03-31T23:46:40","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=22614"},"modified":"2025-03-28T10:26:40","modified_gmt":"2025-03-28T09:26:40","slug":"dynamische-projekteigenschaften-mit-maven-resources-plugin-und-filter","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=22614","title":{"rendered":"Dynamische Projekteigenschaften mit Maven Resources Plugin und Filter"},"content":{"rendered":"<p>Das Maven Resources Plugin wird h\u00e4ufig zum Filtern von Dateien verwendet, wodurch Platzhalter in Ressourcendateien durch in der <strong>pom.xml<\/strong> definierte Werte ersetzt werden k\u00f6nnen. Im Kontext der Ausgabe der Versionsnummer kann dieses Plugin dynamische Projekteigenschaften (Version, artifactId, groupId) w\u00e4hrend des Build-Prozesses direkt in Ressourcendateien einf\u00fcgen. Die Maven-Koordinaten bestehen aus groupId, artifactId und version.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/03\/maven.gif\" alt=\"\" width=\"512\" height=\"288\" class=\"aligncenter size-full wp-image-22620\" \/><\/p>\n<p>Maven verwendet Konventionen f\u00fcr die Namensgebung von Koordinaten. Die <strong>groupId<\/strong> identifiziert eindeutig eine Projektgruppe \u00fcber alle anderen Gruppen hinweg. Sie sollte den Java-Paketnamensregeln folgen, beginnend mit einem umgekehrten Domainnamen, den Sie kontrollieren. Die <strong>artifactId<\/strong> ist der Name, unter dem das Projekt bekannt ist. Zusammen mit der groupId erzeugt sie einen Schl\u00fcssel, der dieses Projekt von allen anderen Projekten unterscheidet. Die <strong>version<\/strong> gibt an, um welche Version es sich handelt.<!--more--><\/p>\n<p>Um das Maven Resources Plugin f\u00fcr die Filterung zu verwenden, muss zuerst der Abschnitt <resources> in der Datei pom.xml konfiguriert werden. Diese Konfiguration weist Maven an, die Filterung f\u00fcr die Ressourcendateien im Projekt zu aktivieren.<\/p>\n<p>So aktualisieren Sie die Datei pom.xml, um die Ressourcenfilterung zu aktivieren:<\/p>\n<pre class=\"lang:default decode:true \" >&lt;build&gt;\r\n    &lt;resources&gt;\r\n        &lt;resource&gt;\r\n            &lt;directory&gt;src\/main\/resources&lt;\/directory&gt;\r\n            &lt;filtering&gt;true&lt;\/filtering&gt;\r\n        &lt;\/resource&gt;\r\n    &lt;\/resources&gt;\r\n&lt;\/build&gt;\r\n<\/pre>\n<p>Diese Konfiguration weist Maven an, alle Dateien im Verzeichnis <strong>src\/main\/resources<\/strong> zu verarbeiten und eine Filterung anzuwenden, um alle Platzhalter durch die entsprechenden Werte aus den Maven-Projekteigenschaften (z. B. ${project.version}) zu ersetzen.<\/p>\n<p>Die Zeile <filtering>true<\/filtering> ist der Schl\u00fcsselteil, der diese Funktion aktiviert.<\/p>\n<p>Als N\u00e4chstes wird eine Ressourcendatei (z. B. version.txt) im Verzeichnis src\/main\/resources erstellt. Diese Datei kann Platzhalter wie ${project.version} enthalten, die w\u00e4hrend des Build-Prozesses dynamisch durch die in der Datei pom.xml definierte Versionsnummer ersetzt werden.<\/p>\n<p>Erstellen Sie beispielsweise eine Datei version.txt mit folgendem Inhalt:<\/p>\n<pre class=\"lang:default decode:true \" >Version: ${project.version}\r\nArtifactId: ${project.artifactId}\r\nGroupId: ${project.groupId}\r\n<\/pre>\n<p>Bauen des Projekts<br \/>\nNachdem die Konfiguration eingerichtet wurde, kann das Projekt mit dem Maven-Befehl erstellt werden:<\/p>\n<p>$ mvn clean package<\/p>\n<p>Nach dem Erstellen des Projekts befindet sich die gefilterte Datei version.txt standardm\u00e4\u00dfig im Verzeichnis target\/classes\/. Die Platzhalter ${project.version}, ${project.artifactId} und ${project.groupId} werden durch die in der Datei pom.xml angegebenen Werte ersetzt:<\/p>\n<pre class=\"lang:default decode:true \" >Version: 0.0.1-SNAPSHOT\r\nArtifactId: de.wenzlaff.twki\r\nGroupId: de.wenzlaff.twki<\/pre>\n<p>Es ist auch m\u00f6glich, benutzerdefinierte Eigenschaften im <properties>-Abschnitt der pom.xml zu definieren und diese dann in den Ressourcendateien zu verwenden. Zum Beispiel:<\/p>\n<pre class=\"lang:default decode:true \" >&lt;properties&gt;\r\n    &lt;meineEigenschaft&gt;Mein Wert&lt;\/meineEigenschaft&gt;\r\n&lt;\/properties&gt;\r\n<\/pre>\n<p>Diese Eigenschaft kann dann in einer Ressourcendatei wie folgt verwendet werden:<\/p>\n<pre class=\"lang:default decode:true \" >Meine Eigenschaft: ${meineEigenschaft}\r\n<\/pre>\n<p>Also eine pom.xml enth\u00e4lt z.B.<\/p>\n<pre class=\"lang:default decode:true \" >\r\n\t&lt;properties&gt;\r\n\t    &lt;ki&gt;open-ai&lt;\/ki&gt;\r\n\t&lt;\/properties&gt;<\/pre>\n<pre class=\"lang:default decode:true \" >Version: ${project.version}\r\nArtifactId: ${project.artifactId}\r\nGroupId: ${project.groupId}\r\nVerwendete KI: ${ki}<\/pre>\n<p>ergibt:<\/p>\n<pre class=\"lang:default decode:true \" >Version: 0.0.1-SNAPSHOT\r\nArtifactId: de.wenzlaff.twki\r\nGroupId: de.wenzlaff.twki\r\nVerwendete KI: open-ai<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Das Maven Resources Plugin wird h\u00e4ufig zum Filtern von Dateien verwendet, wodurch Platzhalter in Ressourcendateien durch in der pom.xml definierte Werte ersetzt werden k\u00f6nnen. Im Kontext der Ausgabe der Versionsnummer kann dieses Plugin dynamische Projekteigenschaften (Version, artifactId, groupId) w\u00e4hrend des Build-Prozesses direkt in Ressourcendateien einf\u00fcgen. Die Maven-Koordinaten bestehen aus groupId, artifactId und version. Maven verwendet &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=22614\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eDynamische Projekteigenschaften mit Maven Resources Plugin und Filter\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,5027,3897],"tags":[66,267],"class_list":["post-22614","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-blockchain","category-java-programmierung","tag-maven","tag-version"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22614"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22614\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22614"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}