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页面所述。