You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven构建JAR运行时获取Implementation-Version返回null问题

解决JAR运行时无法获取版本信息返回null的问题

问题核心是Maven默认不会自动将项目版本写入Manifest的Implementation-Version字段,你需要显式配置maven-jar-plugin来生成包含版本信息的Manifest文件。

步骤1:修改pom.xml配置maven-jar-plugin

在你的maven-jar-plugin中添加归档配置,让Maven把项目版本写入Manifest:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
        <archive>
            <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
                <Implementation-Version>${project.version}</Implementation-Version>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>
  • <addDefaultImplementationEntries>true</addDefaultImplementationEntries>:自动添加默认的实现相关条目,配合手动指定版本更稳妥
  • <Implementation-Version>${project.version}</Implementation-Version>:直接将pom中的版本号写入Manifest对应字段

步骤2:简化Java代码获取版本

原代码操作JarFile的逻辑复杂,还可能出现路径处理问题,推荐用更简洁可靠的方式:

String version = MyClass.class.getPackage().getImplementationVersion();

这段代码会直接从类的Package信息中读取Manifest里的Implementation-Version值,无需手动解析Jar包。

验证

执行mvn clean package重新打包后,打开JAR内的META-INF/MANIFEST.MF文件,确认存在Implementation-Version: 1.2.0条目,再运行JAR即可正确获取版本信息。

内容的提问来源于stack exchange,提问作者sander126

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:10:25