避免使用maven-release-plugin更新POM版本以进行下一次开发迭代

时间:2015-02-27 17:04:39

标签: java maven maven-release-plugin

我正在使用 maven-release-plugin 和git完成我的第一个版本。而不是使用 release:branch 目标标记我。我同意完整的relase-flow流程,除了一点:所有本地依赖关系都会自动更新到开发分支中的下一个SNAPSHOT版本。

这是我的具体情况:我在一个拥有20多个maven项目的项目中工作。让我们说它们在开发过程中都处于SNAPSHOT版本。我想用maven插件发布一个版本。发布完成后,所有POM版本都已递增并再次设置为SNAPSHOT。如果我只需要在一个项目的一行代码中进行更改(修复错误)并创建一个新版本,那么所有项目(默认情况下)都必须在我刚刚更改时再次增加其版本其中一个

在我看来,使用上一版本的状态继续开发更有意义(所有版本没有 SNAPSHOT)。在下一个开发迭代中,我可以仅在我已更改的这些项目中手动设置下一个SNAPSHOT版本。在下一个版本中,只有已更改的项目才会被提升并且#34;到新版本,但不是全部版本。

我认为这种情况并不例外,但我没有找到如何做到这一点的信息(而且我不知道我是否打破了"释放"哲学。 ..)

Somedy知道如何避免将所有POM更新到下一个SNAPSHOT版本并将POM文件保留为重新版本?

提前谢谢!

2 个答案:

答案 0 :(得分:5)

多模块项目的想法是所有模块都是同一发布周期的一部分。即使某些模块不包含任何更改,它们也将成为发布的一部分。有些人可能会说:版本很便宜。 与您描述的理想图片相比,其优势更大:管理版本和控制模块间依赖性要容易得多。 请记住,主干和分支应始终具有SNAPSHOT版本,因为这些是工作副本。如果您使用最终版本,则发布将失败,因为您无法将相同版本标记两次,也无法两次部署(=上载)相同版本。这非常重要,因为Maven依赖于最终版本是不可变的定义,即Maven在本地存储库中可用后永远不会再次下载最终版本。

因此,如果某些模块没有与整个多模块项目相同的发布周期,则应将它们移出此多模块项目(或一次性释放它们)。

答案 1 :(得分:1)

发布单个模块,应用程序或应用程序系统之间的差异总结在我的幻灯片共享演示文稿http://www.slideshare.net/geertpante/version-mgmt-in-maven中(幻灯片20及以下)。

我们有时会将快照版本设置为例如2.0-SNAPSHOT,并以1.x.y发布。因此在开发过程中,我们始终使用2.0-SNAPSHOT,但是当我们发布时,我们会选择旧版本,例如1.3,1.4,并选择2.0-SNAPSHOT作为下一个版本。

另外,如果您使用git,请查看https://bitbucket.org/atlassian/jgit-flow/wiki/Home。其中一个优点是它保留了一个开发分支,只有版本合并到主分支:

mvn jgitflow:release-start -DreleaseVersion=1.2 -DdevelopmentVersion=2.0-SNAPSHOT
mvn jgitflow:release-finish -DreleaseVersion=1.2 -DdevelopmentVersion=2.0-SNAPSHOT