java - ImplementedVersion 在 exec :java target 中无法访问

标签 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 运行所有内容时,我得到 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/

相关文章:

java - eclipse ee servlet tomcat doPost http405

java - 涉及文档上传和签名的应用程序

Java jTextPane 一行常规和粗体文本错位

java - 如何在 Maven 中设置 java-first webservice client-jar?

java - Maven:如何在 Eclipse 中包含存储库中不可用的 jar?

java - 仅在 Eclipse 中存在反序列化问题

java - 无法使用 Maven 构建 Spring 4 项目

vim/emacs 中的 Java + jdb + maven : How can I do it?

java - 是否可以将类密封在 jar 文件中?

java - 如何检测 JAR 文件?