21

I have a Maven pom.xml, I build project and release project deploy with Jenkins.

But before and after build "release version" we need set my version in

For example: I have in pom.xml

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

before release I need set like this

<properties>
   <version-own>0.0.25</version-own>
</properties>

after release I need set like this

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

How can this be done?

4

6 回答 6

32

如果您不必使用自己的版本属性,请考虑将在您的<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),之后你可以设置你的新版本并像上面一样提交它。

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

于 2013-01-23T16:29:13.803 回答
8

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

对于剪切和粘贴:

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}'

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

于 2015-10-26T14:00:56.987 回答
7

对于初学者,您可以手动完成。如果您的构建很好地遵循 maven 约定,您可能可以利用现有的几个 maven 插件之一来帮助管理版本号。

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

然后是maven-release-plugin,它可以自动执行剪切发布的整个过程。它会将您的快照更改为发布版本,然后在发布构建后将其滚动到下一个快照。在所有这些过程中,它会将离散版本的 pom 提交给源代码控制。

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

于 2013-01-23T16:14:34.347 回答
2

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

于 2013-02-01T20:42:29.310 回答
1

有类似的东西parsedVersion.nextIncrementalVersion

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

于 2016-04-05T18:44:20.443 回答
0

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

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

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

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

干杯,
暴君

于 2013-07-17T11:35:06.993 回答