Maven 发布插件 - 如何修改发布项目的版本

Maven release plugin - how to bump version of release project

我正在将 Maven 发布插件与 Jenkins 一起用于 CICD。由于各种原因,我们没有按预期进行快照。我们将 Jenkins 设置为 运行 针对主分支构建 0.1、1.0 等版本。每次我们 运行 Jenkins 时,我们都想提高版本号。这些是我在 Jenkinsfile 中的命令:

sh "mvn -B release:clean"
sh "mvn -B release:prepare"
sh "mvn -B release:perform"

最终收到错误 You don't have a SNAPSHOT project in the reactor projects list。不足为奇,因为 release:prepare 总是寻找 SNAPSHOT 分支。有办法绕过它吗?我为 prepare 找到了此选项 -DignoreSnapshots,但它不起作用。

不幸的是,maven 发布插件是不可能的。你应该有快照。

但是如果你只需要更新项目版本你可以使用maven版本插件

http://www.mojohaus.org/versions-maven-plugin/examples/set.html

发布插件旨在在 运行 发布插件 mvn -B release:prepare 之前有一个 1.0-SNAPSHOT ,它将版本更改为发布版本 1.0 之后它将将它们更改为 1.1-SNAPSHOT(所谓的下一个开发版本)。在 release:perform 期间,您的构建 1.0 的标记状态将从版本控制中检出并将执行 mvn clean deploy

可以通过以下方式进一步使用发布插件:

mvn -B release:prepare release:perform

如果出现问题,您可以mvn release:clean(但如果手动创建标签,则需要删除标签)。

如果您只有无法使用的版本...除此之外 SNAPSHOT 不是分支,它是版本问题...

您可以通过 build-helper-maven-plugin and versions-maven-plugin:

完成您喜欢的事情
mvn build-helper:parse-version versions:set \
 -DnewVersion=${parsedVersion.majorVersion}.\
   ${parsedVersion.minorVersion}. \
   ${parsedVersion.nextIncrementalVersion} \
  versions:commit

之后,您应该将此更改提交到版本控制中(最好通过 Jenkins 中的管道完成)。此外通过 scm-maven-plugin:

mvn scm-maven-plugin:commit