我已经使用这个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?
答案 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>