使用maven-release-plugin的正确工作流程是什么?

时间:2014-05-02 18:24:11

标签: java maven svn maven-release-plugin

我只有使用SVN命令发布的经验(通过tortoiseSVN),但我想使用maven-release-plugin代替。但我的经验是,maven-release-plugin非常非常挑剔。我想知道我应该如何做发布和分支,所以我不打算插件。适用于这两种情况的maven-release-plugin工作流程是什么:

  1. 每个人都在干线上开发,我们决定向客户提供版本。

    我的猜测是你应该在行李箱上做release:prepare release:perform。它会将版本放在tags目录中。您将标签提供给客户。

  2. 我们向客户提供了一个版本,但发现了一个错误。如何修复其版本中的错误并为其提供新版本?

    我的猜测是你应该使用标签上的release:prepare release:branch将标签复制到branches目录中。将分支放在名为“release-version.x”的目录中,但为分支提供类似“release-version.1”的maven版本。修改该分支以修复错误后,使用{将分支释放回标记目录{1}}。该分支现在将具有maven版本的“release-version.2”

    如果您之后需要修复另一个错误,只需修改已有的“release-version.x”分支,然后在其上运行另一个release:prepare release:perform

  3. 您希望在分支机构上“冻结”开发,并且可能将其提供给客户,但您确定在准备好之前会在其中找到错误将其部署到生产服务器。

    我的猜测是你可以释放.0并且当/如果找到分支将.0分支到.1-SNAPSHOT,在SNAPSHOT中修复它并将分支释放到.1。

    但是,您可能在美学上并不喜欢客户首先获得.1或.2版本的想法。如果您不喜欢,可以先使用release:branch目标创建分支,然后仅在准备好后才释放该分支。

  4. 这是一个理论。正如我之前所说,maven-release-plugin非常挑剔,我不知道它是否会让我做所有这些步骤。有人可以解释在maven中用于标记和分支代码的最佳工作流程吗?

1 个答案:

答案 0 :(得分:1)

我假设您的maven版本号是问题的一部分。这是一个想法:

响应1)当你释放,第一个分支,然后立即从分支释放。如果发布插件失败,它可以帮助您整理主干pom。

响应2)当你分支,并且maven将trunk版本从1.0.0-SNAPSHOT增加到1.0.1-SNAPSHOT时,我们实际上就遇到了问题。

如果我们可以增加次要版本而不是增量版本,我们就可以

分支中的1.0.0-SNAPSHOT,中继中的1.1.0-SNAPSHOT和发布/标记中的1.0.0。

修复错误时,从标记1.0.0分支并在新分支中将版本设置为1.0.1-SNAPSHOT。这一步就像

mvn release:branch -DbranchName=fixMe -DupdateWorkingCopyVersions=false 
来自相关内部标记目录的

使用mvn release修复bug和从分支版本1.0.1发布:prepare and release:perform。

使用选项-DupdateWorkingCopyVersions = false,以便不更新标记版本。

使用versions:set plugin设置分支中的版本。这可能需要一个shell脚本来计算增量版本,或者如果你不经常这样做,只需要手工编写。