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 和语义版本控制:如何增加主要或次要版本的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins 的 maven 发布插件 - 如何设置父项目版本?