无论如何在运行时获取我的战争的 maven 部署插件在运行时生成的完整工件版本/内部版本号?
如果 maven 进程生成并打包一个带有该值的属性文件就可以了。
请记住,我的项目会为每次部署生成唯一的(带时间戳的)工件版本。
无论如何在运行时获取我的战争的 maven 部署插件在运行时生成的完整工件版本/内部版本号?
如果 maven 进程生成并打包一个带有该值的属性文件就可以了。
请记住,我的项目会为每次部署生成唯一的(带时间戳的)工件版本。
尝试这个:
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries/>
<addDefaultSpecificationEntries/>
</manifest>
</archive>
</configuration>
这会将构建战争的 pom 中的 maven 详细信息添加到 MANIFEST.MF 文件中,您可以在运行时读取该文件。
我偶尔使用的另一种方法是使用属性文件的过滤,并将 pom 值放入其中 - 如果您已经有了属性文件/配置加载机制,这很有用。
然后,当它被部署时,它使用来自 pom 的相同值,你很好。
-克里斯
您可以使用maven-jar-plugin将其打包到您的清单文件中,该文件可以在您需要的任何地方通过您的应用程序读取。
这是将 pom.xml 中的属性写入清单文件的基本配置。
<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 的更多信息。