在我的战争中,在运行时获取maven deploy plugin artifact版本

时间:2014-06-21 04:31:10

标签: java maven war artifactory maven-deploy-plugin

无论如何,在运行时获取我的战争的maven部署插件在运行时生成的完整工件版本/内部版本号?

如果maven进程生成并打包了一个带有值的属性文件,那就没问题了。

请记住,我的项目会为每个部署生成唯一(带时间戳)的工件版本。

2 个答案:

答案 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的更多信息。