【发布时间】:2026-01-29 02:25:01
【问题描述】:
我有一个使用netbeans IDE构建的项目(如果我没记错的话内部使用Ant构建)
我们使用的 CI 服务器是 jenkins。我想将版本信息添加到生成的 jar 的清单中。
我该怎么做?
【问题讨论】:
-
请看一下。我使用环境变量添加了另一个示例。
标签: java jenkins jar manifest.mf
我有一个使用netbeans IDE构建的项目(如果我没记错的话内部使用Ant构建)
我们使用的 CI 服务器是 jenkins。我想将版本信息添加到生成的 jar 的清单中。
我该怎么做?
【问题讨论】:
标签: java jenkins jar manifest.mf
假设您的 Jenkins 构建过程以某种方式更新了项目版本,一个可能的解决方案是:
在nbproject\build-impl.xml 中为清单添加一个条目
<target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" ...
<manifest file="${tmp.manifest.file}" mode="update">
<attribute name="Main-Class" value="${main.class}"/>
<!-- add this line below -->
<attribute name="Project-Version" value="${project.version}"/>
</manifest>
</target>
在nbproject\project.properties添加项目版本
project.version=0.0.1-SNAPSHOT
构建
ant jar
输出
$ unzip -p dist/CI-test.jar META-INF/MANIFEST.MF | grep Project
Project-Version: 0.0.1-SNAPSHOT
编辑:另一个使用环境变量的解决方案。
在nbproject\build-impl.xml 中使用环境变量PROJECT_VERSION为清单添加一个条目
<target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" ...
<!-- enable access to environment variables -->
<property environment="env"/>
<manifest file="${tmp.manifest.file}" mode="update">
<attribute name="Main-Class" value="${main.class}"/>
<!-- add this line below -->
<attribute name="Project-Version" value="${env.PROJECT_VERSION}"/>
</manifest>
</target>
构建
# define the environment variable
# on Windows use: set PROJECT_VERSION=0.0.2-SNAPSHOT
PROJECT_VERSION=0.0.2-SNAPSHOT
ant jar
输出
$ unzip -p dist/CI-test.jar META-INF/MANIFEST.MF | grep Project
Project-Version: 0.0.2-SNAPSHOT
【讨论】: