我已使用此 how2 将版本号添加到我们的产品中:http://www.christophkiehl.com/easy-way-to-display-your-apps-version-using-maven-and-manifest
当我现在使用 mvn assembly:single
构建 jar 时,我看到了正确的版本。
但是当我用 mvn exec:java
运行所有内容时,我得到 null...
当我刚从非 jar 启动程序时,我必须做什么才能使 App.class.getPackage().getImplementationVersion()
不返回 null?
最佳答案
您用来添加版本号的技术仅在构建为 jar 时才有效。
实现相同目的的另一种方法是拥有一个属性文件,该文件在构建期间随项目版本进行更新,而该文件又由您的 java 代码读取。
假设,您在 src/main/resources
中有一个文件 version.properties
,其中有一个条目
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>
关于java - ImplementedVersion 在 exec :java target 中无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579943/