在exec:java目标中无法访问ImplementedVersion
我已使用how2将版本号添加到我们的产品中: 当我现在使用在exec:java目标中无法访问ImplementedVersion,java,maven,jar,manifest,Java,Maven,Jar,Manifest,我已使用how2将版本号添加到我们的产品中: 当我现在使用mvn assembly:single构建jar时,我看到了正确的版本。 但是当我用mvn exec:java运行所有东西时,我得到了null 当我刚从非jar启动程序时,App.class.getPackage().getImplementationVersion()不会返回null,我该怎么做?您用于添加版本号的技术只有在构建为jar时才起作用 实现这一点的另一种方法是使用一个属性文件,该文件在构建期间随项目版本更新,然后由java代
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以启用对资源的筛选-本质上是添加一个如下所示的片段(请参阅以获取详细信息)
${basedir}/src/main/resources
真的
我是否必须向pom文件中添加一些内容才能将版本提取到此属性文件,还是无法自动工作?@reox。用所需的pom更改更新了答案。
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>