避免使用maven发布插件为下一次开发迭代更新POM版本



我正在使用maven发布插件和git进行我的第一次发布。我使用版本:分支目标,而不是标记。我同意完整的relase流程,但有一点除外:所有本地依赖项都会自动更新到开发分支中的下一个SNAPSHOT版本。

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

在我看来,以上一个版本的状态继续开发更有意义(所有版本都没有SNAPSHOT)。在下一次开发迭代中,我只能在我更改的这些项目中手动设置下一个SNAPSHOT版本。在下一个版本中,只有更改后的项目将"升级"到新版本,但不是所有项目。

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

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

提前谢谢!

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

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

在我的幻灯片演示中总结了发布单个模块、应用程序或应用程序系统之间的差异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

相关内容