在exec:java target中无法访问ImplementedVersion

时间:2011-12-20 18:08:54

标签: java maven jar manifest

我已经使用这个how2将版本号添加到我们的产品中:http://www.christophkiehl.com/easy-way-to-display-your-apps-version-using-maven-and-manifest

当我现在用mvn assembly:single构建一个jar时,我看到了正确的版本。 但是,当我用mvn exec:java运行所有内容时,我得到空...

当我从非jar启动程序时,我必须做什么App.class.getPackage().getImplementationVersion()不返回null?

1 个答案:

答案 0 :(得分:1)

您用于添加版本号的技术仅在构建为jar时才有效。

实现相同目标的另一种方法是在构建期间使用项目版本更新属性文件,然后由Java代码读取。

比如说,version.properties中有一个文件src/main/resources,其中有一个条目

product.version=${project.version}

在您致电App.class.getPackage().getImplementationVersion()的地方,您会阅读此属性并显示内容。

这适用于jar和非jar的情况。

更新:您需要更新pom以启用对资源的过滤 - 实质上是添加如下所示的代码段(有关详细信息,请参阅this)。

<resources>
  <resource>
    <directory>${basedir}/src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>