更改Maven项目版本,发布该版本然后返回*-SNAPSHOT
开发的最佳方法是什么。
目前,我正在执行以下操作:
SNAPSHOT
从中检索当前版本(最有可能与)pom.xml
- 增量版本(
mvn -DnewVersion=<something> versions:set
),遵守问题Maven工件版本中描述的补丁规则 mvn:install
发送回购- 重命名版本再次添加
SNAPSHOT
后缀。 - 提交更改(使用某些版本控制系统)
我有一种强烈的感觉,我做错了和/或效率低下。
更改Maven项目版本,发布该版本然后返回*-SNAPSHOT
开发的最佳方法是什么。
目前,我正在执行以下操作:
SNAPSHOT
从中检索当前版本(最有可能与)pom.xml
mvn -DnewVersion=<something> versions:set
),遵守问题Maven工件版本中描述的补丁规则mvn:install
发送回购SNAPSHOT
后缀。我有一种强烈的感觉,我做错了和/或效率低下。
Answers:
您应该使用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解决方案中使用。
使用mvn install仅用于将工件安装到本地存储库中。如果您正在使用像存储库管理器这样的真实库(我可以推荐),则必须使用:
mvn deploy
使用release插件的一个要求是在pom中配置scm区域(我希望您使用的是版本控件?)。
release:peform
由于您未提供,鞋底将失败-DscmUrl=...
。
1.0-SNAPSHOT
该发行版,那么1.0
...而不是1.0.0
...
如果要对发布阶段进行更多控制,则maven-release-plugin(mrp)不会对您有太大帮助。
在那种情况下,我修改了versions-maven-plugin,使其能够增加版本并添加/删除SNAPSHOT后缀。
由于有了这些新功能,您可以编写与mrp相同功能的脚本,但是您可以完全控制每个步骤。
例如,mrp会在实际尝试构建更改版本之前提交更改的版本。如果构建失败,则必须还原该提交,如果是SVN,则必须执行另一个还原提交。
注意:我不是递增函数的原始作者。我已经从autoincrement-versions-maven-plugin中采用了它,如github页面上所述。
versions-maven-plugin
github页面上创建了pull请求,希望他们将其集成到github.com/mojohaus/versions-maven-plugin/pull/23
versions-maven-plugin
。它只是增加了另一个目标,使其更加灵活。我想虽然现在有点过时了。