无论如何,在运行时获取我的战争的maven部署插件在运行时生成的完整工件版本/内部版本号?
如果maven进程生成并打包了一个带有值的属性文件,那就没问题了。
请记住,我的项目会为每个部署生成唯一(带时间戳)的工件版本。
答案 0 :(得分:1)
试试这个:
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries/>
<addDefaultSpecificationEntries/>
</manifest>
</archive>
</configuration>
这会将构建战争的pom中的maven详细信息添加到MANIFEST.MF文件中,您可以在运行时读取该文件。
我偶尔使用的另一种方法是使用属性文件的过滤,并将pom值放入其中 - 如果您已经有了属性文件/配置加载机制,则非常有用。
然后,当它被部署时,使用来自pom的相同值,你就可以了。
-Chris
答案 1 :(得分:-1)
您可以使用maven-jar-plugin将其打包到您的清单文件中,可以通过您的应用程序随时阅读。
以下是将pom.xml中的属性写入Manifest文件的基本配置。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> <manifest> <addClasspath>false</addClasspath> </manifest> <manifestEntries> <Implementation-Vendor>Vendor Name</Implementation-Vendor> <Implementation-Version>${revision}</Implementation-Version> <Build-Timestamp>${timestamp}</Build-Timestamp> <Build-Number>${release}_${revision}</Build-Number> </manifestEntries> </archive> </configuration> <executions> <!-- your jar executions here --> </executions> </plugin>
您的属性值将在pom.xml中定义为:
<properties>
<timestamp>${maven.build.timestamp}</timestamp>
<release>DevelopmentBuild</release>
<revision>Some Value</revision>
<properties>
修改强>
这也可以使用maven-war-plugin来完成。 您可以获得有关WAR Manifest Customization Here的更多信息。