Jenkins、Maven 和语义版本控制:如何增加主要或次要版本

Posted

技术标签:

【中文标题】Jenkins、Maven 和语义版本控制:如何增加主要或次要版本【英文标题】:Jenkins, Maven and semantic versioning: How to increment either the major or minor version 【发布时间】:2013-12-12 20:54:15 【问题描述】:

在我们的工作中,我们通过 Jenkins 作业发布和部署我们的组件。这样做的问题是它只会增加“补丁”版本号(major.minor.patch,例如 4.2.1 到 4.2.2)。我想让工作告诉 maven 这是一个“次要”版本(4.2.1 -> 4.3.0),一个“主要”版本(4.2.1 -> 5.0.0)或补丁版本(默认行为)。

Jenkins 将参数传递给 maven 的接口很简单,但是是否有任何命令可以让 maven 更新次要或主要版本,而无需明确说明您需要什么版本(和开发版本)。因为它可以很容易地更新补丁版本,所以我希望有命令对次要版本或主要版本执行相同的操作。

【问题讨论】:

【参考方案1】:

使用mvn 和发布插件,您可以轻松更新版本。你可以这样做:

mvn release:update-versions

更多选项,请查看documentation。

【讨论】:

谢谢。但这只会增加“补丁”编号。我想知道当你点击构建时,唯一的解决方案是在 Jenkins 发布工作中是否有 texfield 提示。但是你需要知道当前版本是什么等等。容易出现太多人为错误。 是的,您需要 UI 中的文本字段。如果您使用 jenkins 发布插件,您实际上可以指定该信息。 我不明白这个问题; maven 版本会将快照版本转换为发布版本(1.0.5-SNAPSHOT -> 1.0.5),然后在完成后递增到下一个快照版本(1.0.6-SNAPSHOT)。此时您可以随意将该版本转换为您想要的任何版本,因此您可以手动将 pom 更改为 1.1.0-SNAPSHOT 版本。 嗨金比。我希望它从 1.0.5-SNAPSHOT 开始,并根据此 SNAPSHOT 阶段的开发周期进行选择。例如(大致符合语义版本控制)如果我们对客户端进行了接口更改,那么我们会说我们想要部署一个“主要”版本(1.0.5-SNAPSHOT 到 2.0.0 被发布和部署,然后是主干现在是 2.0.1-SNAPSHOT)。同样,对于“次要”版本,我们希望它类似于:1.0.5-SNAPSHOT ->(次要版本)1.1.0 -> 1.1.1-SNAPSHOT。对于“补丁”版本,我们只需执行正常的 mvn release:release。 所以你定义/之后的版本和实际发布的同时?【参考方案2】:

它最近可能对某人有所帮助。我们使用Maven Build Helper插件如下:

次要版本:

mvn build-helper:parse-version versions:set -DnewVersion=\$parsedVersion.majorVersion.\$parsedVersion.nextMinorVersion.0 versions:commit

主要版本:

mvn build-helper:parse-version versions:set -DnewVersion=\$parsedVersion.nextMajorVersion.0.0 versions:commit

补丁发布:

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

【讨论】:

以上是关于Jenkins、Maven 和语义版本控制:如何增加主要或次要版本的主要内容,如果未能解决你的问题,请参考以下文章

如何根据语义版本控制自动增加 Web 应用程序版本?

在 Jenkins 中从 Maven POM 获取项目版本

Jenkins 的 maven 发布插件 - 如何设置父项目版本?

jenkins为啥只打印maven的构建日志,不显示项目启动日志?

Jenkins+git+maven的使用

Jenkins 中的 Maven 发布问题