Maven:在pom.xml中更改版本属性

use*_*266 18 pom.xml maven jenkins

我有一个Maven pom.xml,我用Jenkins构建项目和发布项目部署.

但在构建"发布版本"之前和之后,我们需要设置我的版本

例如:我在pom.xml中

<properties>
   <version-own>0.0.21-SNAPSHOT</version-own>
</properties>
Run Code Online (Sandbox Code Playgroud)

在发布之前,我需要像这样设置

<properties>
   <version-own>0.0.25</version-own>
</properties>
Run Code Online (Sandbox Code Playgroud)

发布后我需要像这样设置

<properties>
   <version-own>0.0.27-SNAPSHOT</version-own>
</properties>
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

Ane*_*new 28

如果您不必使用自己的版本属性,请考虑对您的<project><version>0.0.21-SNAPSHOT</version></project>元素进行操作的以下内容:

mvn versions:set versions:commit -DnewVersion="0.0.25"
Run Code Online (Sandbox Code Playgroud)

这将修改您的pom并根据您的喜好调整版本.您可能希望将此更改提交到源代码控制存储库,为此scm插件的scm:checkin目标工作正常(假设您希望自动化):

mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release."
Run Code Online (Sandbox Code Playgroud)

然后你可以执行你的发布(我推荐maven-release-plugin),之后你可以设置你的新版本并按上面提交它.

版本的插件是你的朋友.编写上述脚本可能涉及一些参数化构建,或者最好是jenkins的groovy插件,它允许您获取特定于maven的构建变量.

  • 在 ci 系统中运行时,`scm:checkin` 是一个有趣的地方。我以为 `versions:commit` 会做到这一点 (2认同)

Ale*_*zin 7

有一种方法可以轻松实现.使用一个命令,您可以更改所需的任何部分:

用于剪切和粘贴:

mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}'
Run Code Online (Sandbox Code Playgroud)

为清楚起见:

mvn build-helper:parse-version versions:set -DbuildNumber=555
   '-DnewVersion=
                  ${parsedVersion.majorVersion}
                 .${parsedVersion.minorVersion}
                 .${parsedVersion.incrementalVersion}
                 -${buildNumber}'
Run Code Online (Sandbox Code Playgroud)

这是一个简洁的示例,说明如何使用构建值一次更新版本


cha*_*had 6

对于初学者,你可以手工完成.如果您的构建遵循maven约定,则可以利用现有的几个maven插件中的一个来帮助管理版本号.

Maven的版本,插件可以自动完成,以版本号手动更改.它有很好的CLI命令来帮助你在发布之前调整你的poms.

然后是maven-release-plugin,它可以自动完成剪切版本的整个过程.它会将您的快照更改为发布版本,然后在发布版本之后将其滚动到下一个快照.在所有这一过程中,它将poms的离散版本提交给源控件.

再一次,在maven社区更自动化的部分看到成功的秘诀在于你的构建是否以maven的方式做事.黑客,高度调整,非传统的构建通常对成功使用发布插件有很多障碍.