Maven版本最佳实践

sha*_*unc 61 versioning maven

更改Maven项目版本,发布此版本然后返回*-SNAPSHOT开发的最佳方法是什么.

目前我正在做以下事情:

  • 检索当前版本(最有可能SNAPSHOT)pom.xml
  • 增量版本(mvn -DnewVersion=<something> versions:set),尊重问题Maven工件版本中描述的补丁规则
  • mvn:install 发送回购
  • 重命名版本再次添加SNAPSHOTpostfix.
  • 提交更改(使用某些版本控制系统)

我有强烈的感觉,我做错了什么和/或效率低下.

khm*_*ise 71

您应该使用maven-release-plugin来发布您的工件.比自动所有版本都将通过release-plugin增加.例外情况可能是从1.0.3-SNAPSHOT到1.1.0-SNAPSHOT.使用Maven开发的时间表是:

1.0.0-SNAPSHOT
1.0.0
1.0.1-SNAPSHOT
1.0.1
1.0.2-SNAPSHOT
1.0.2
..
Run Code Online (Sandbox Code Playgroud)

要从SNAPSHOT步骤到发布版本,您应该使用maven发布插件,只需使用以下命令就可以释放工件:

第一步:

mvn release:prepare 
Run Code Online (Sandbox Code Playgroud)

最后一步:

mvn release:perform
Run Code Online (Sandbox Code Playgroud)

如果您想接受默认值,您只需添加-B like:

mvn -B release:prepare 
Run Code Online (Sandbox Code Playgroud)

或者您可以将这些步骤合并为一个步骤:

mvn -B release:prepare release:perform
Run Code Online (Sandbox Code Playgroud)

以上也可以在CI解决方案中使用.

使用mvn install仅用于将工件安装到本地存储库中.如果您正在使用真正的存储库管理器(我可以推荐),您必须使用:

mvn deploy 
Run Code Online (Sandbox Code Playgroud)

使用release插件的一个要求是在你的pom中配置scm区域(我希望你使用的是版本控制?).

  • @ Michael-O为什么要在命令行上指定SCM URL?我怀疑khmarbaise是通过POM设置<scm> <developerConnection>提供的 (2认同)
  • 我可以证实这一点。如果您喜欢使用“1.0-SNAPSHOT”,那么发行版将是“1.0”...而不是“1.0.0”... (2认同)

Pet*_*ský 5

如果您想要更好地控制发布阶段,maven-release-plugin(mrp)对您没有多大帮助.

在那种情况下,我修改了versions-maven-plugin,以便能够增加版本,还可以添加/删除SNAPSHOT后缀.

由于这些新功能,您可以编写与mrp完全相同的脚本,但您可以完全控制每个步骤.

例如,mrp 实际尝试构建之前提交更改的版本.如果构建失败,则必须还原该提交,或者在SVN的情况下,您必须执行另一个还原提交.

注意:我不是增量函数的原作者.我已经从autoincrement-versions-maven-plugin中采用了它,如github页面所述.