Maven版本控制的最佳实践

什么是最好的方式来改变版本的Maven项目,发布这个版本,然后返回到*-SNAPSHOT发展。

目前我在做以下事情:

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

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

你应该使用maven-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 .. 

要从SNAPSHOT到发布版本的步骤,您应该使用maven发布插件,您可以简单地通过使用以下内容来发布工件:

第一步:

 mvn release:prepare 

最后一步:

 mvn release:perform 

如果您想接受默认值,您可以简单地添加-B,如:

 mvn -B release:prepare 

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

 mvn -B release:prepare release:perform 

以上也可以从CI解决scheme中使用。

使用mvn install仅用于将工件安装到本地存储库中。 如果你正在使用一个像仓库经理(我可以推荐)真正的工作,你必须使用:

 mvn deploy 

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

如果你想更多地控制发布阶段,maven-release-plugin(mrp)不会帮你太多。

在这种情况下,我已经修改版本 – maven-plugin能够增加版本,也添加/删除SNAPSHOT后缀

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

例如, 实际尝试构build它之前 ,mrp提交了已更改的版本。 如果构build失败,则必须恢复提交,否则在SVN的情况下,您必须执行另一个恢复提交。

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