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

时间:2013-01-23 15:24:08

标签: maven jenkins pom.xml

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

但在构建“发布版本”之前和之后,我们需要在

中设置我的版本

例如: 我在pom.xml

<properties>
   <version-own>0.0.21-SNAPSHOT</version-own>
</properties>

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

<properties>
   <version-own>0.0.25</version-own>
</properties>
发布后我需要像这样设置

<properties>
   <version-own>0.0.27-SNAPSHOT</version-own>
</properties>

如何做到这一点?

6 个答案:

答案 0 :(得分:27)

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

mvn versions:set versions:commit -DnewVersion="0.0.25"

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

mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release."

然后您可以执行发布(我推荐maven-release-plugin),之后您可以设置新版本并按上述方式提交。

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

答案 1 :(得分:7)

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

剪切和粘贴:

mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}'

为清楚起见:

mvn build-helper:parse-version versions:set -DbuildNumber=555
   '-DnewVersion=
                  ${parsedVersion.majorVersion}
                 .${parsedVersion.minorVersion}
                 .${parsedVersion.incrementalVersion}
                 -${buildNumber}'

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

答案 2 :(得分:6)

首先,您可以手动完成。如果您的构建遵循maven约定,您可以利用现有的几个maven插件中的一个来帮助管理版本号。

maven-versions-plugin有助于自动手动更改版本号。它有很好的CLI命令来帮助你在发布之前调整你的poms。

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

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

答案 3 :(得分:2)

Build-helper插件支持正则表达式替换,甚至可以根据需要解析版本​​号。 http://www.mojohaus.org/build-helper-maven-plugin/

答案 4 :(得分:1)

有类似parsedVersion.nextIncrementalVersion

的内容

mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit

答案 5 :(得分:0)

查看此comment,您说明您正在使用此版本来提供依赖项。 maven-release-plugin应该可以帮助您管理版本。所以在你的pom.xml中提供该插件。

对于手动提供发布和开发版本的步骤,在jenkins中创建一个具有2个字符串参数的作业:
developmentVersion
releaseVersion
添加“调用顶级Maven目标”构建步骤以执行释放(例如):

clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion}

构建作业时,它会提示您插入developmentVersion和releaseVersion。

干杯,