私はmaven 3.0.4を使用しており、ビルドタイムスタンプにアプリケーションからアクセスできるようにしたいと考えています。このために、.properties
ファイルにプレースホルダーを配置し、mavenがビルド時にフィルター処理するようにします。これは${project.version}
に対しては正常に機能しますが、${maven.build.timestamp}
はフィルタリングで置き換えられません。
このプロパティはビルドで利用できるようです-アーティファクト名を変更するために使用できます:
<finalName>${project.artifactId}-${maven.build.timestamp}</finalName>
では、なぜリソースフィルタリングに利用できないのですか?そして、さらに重要なことは、どのようにアクセス可能にするのですか?
PomプロジェクトレベルでMavenプロパティを追加すると、正しいローカルタイムゾーンが考慮されないため、タイムスタンプが間違っているように見える場合があります。
<properties><timestamp>${maven.build.timestamp}</timestamp></properties>
Build-helper-maven-pluginを使用すると、正しいタイムゾーンと現在の夏時間がタイムスタンプに適用されます。
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
<configuration>
<name>timestamp</name>
<pattern>yyyy-MM-dd HH:mm:ss</pattern>
<timeZone>Europe/Zurich</timeZone>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
パッケージ化するとき、Mavenは/ resourcesフォルダー内のトークンのタイムスタンプを置き換えます。 resources/version.properties:
build.timestamp = $ {timestamp}
その後、このプロパティファイルをアプリケーションにロードできます。