20.11.2012

Maven - Filtering von Resourcen

Auf der Suche nach einer Möglichkeit eine Webanwendung durch den Timestamp und die POM-Version zu kennzeichnen bin ich über die Möglichkeit des Filterings gestolpert.


Über das Filtering ist es recht leicht möglich eine bereits bestehende Properties-Datei zu erweiterten und mit den gewünschten Informationen zu versehen. Der Einfachheit halber wird an dieser Stelle nur das Filtering beschrieben, die Anwendung selbst wird als Konsolenanwendung gebaut. Der Aufbau der Anwendung ist der folgende:


Die Anwendung wird nach dem Packaging auf der Konsole gestartet. Die Anwendung selbst ist nicht mehr als das Lesen der Properties und das nachfolgende Schreiben auf der Konsole.



Ein erster Aufruf zeigt die folgende Ausgabe auf der Konsole:


Wie zu sehen ist, werden die Properties zur Laufzeit noch nicht ersetzt. Für ein Filtering der Resource-Dateien wird eine Erweiterung des POM benötigt.


Nach diesem Schritt ist es möglich, Properties zum Zeitpunkt des Packagings ersetzen zu lassen. Das gilt natürlich auf allen Einträgen im Resource-Verzeichnis. Nach dem Packaging ändert sich die Ausgabe wie folgt:


Zu sehen ist, dass die erste Property, ${pom.version}, als Standardproperty ersetzt werden konnte. Die andere Property, ${last.build}, bleibt allerdings unaufgelöst. Das liegt daran, dass diese noch nicht im POM definiert ist.


Sobald diese definiert ist, kann eine Ausgabe wie gewünscht realisiert werden.


Es gibt unterschiedliche Szenarien in denen ein Filtering zum Einsatz kommen kann. Nicht nur das Hinzufügen von Build-Informationen zu Web-Anwendungen, sondern auch das Ersetzen von speziellen Informationen für Tests, Stage-sepzifische Builds oder anderen spezielleren Einsatzzwecken.

Nice to know.

1 Kommentar:

  1. kleiner Hinweis:

    ${pom.version} wird von Maven 3 als "deprecated" angemerket und man soll doch bitte ${project.version} verwenden

    Viele Grüße

    Kay

    AntwortenLöschen