与 maven-release-plugin 一起使用的正确工作流程是啥?

Posted

技术标签:

【中文标题】与 maven-release-plugin 一起使用的正确工作流程是啥?【英文标题】:What is the proper workflow to use with the maven-release-plugin?与 maven-release-plugin 一起使用的正确工作流程是什么? 【发布时间】:2014-05-02 18:24:11 【问题描述】:

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

    每个人都在开发主干,我们决定为客户提供一个版本。

    我猜你应该为此在主干上设置release:prepare release:perform。它将版本放在标签目录中。您将标签提供给客户。

    我们向客户提供了一个版本,但发现了一个错误。我如何着手修复他们版本中的错误并给他们一个新版本?

    我的猜测是您应该使用标签上的release:prepare release:branch 将标签复制到分支目录中。将分支放在名为“release-version.x”的目录中,但给分支一个 maven 版本,如“release-version.1”修改该分支以修复错误后,使用 @ 将分支释放回标记目录987654325@。该分支现在将具有“release-version.2”的 maven 版本

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

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

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

    但是,您可能不喜欢客户首先获得 .1 或 .2 版本的想法。如果您不喜欢这样,您可以使用release:branch 目标先创建分支,然后仅在您准备好时发布该分支。

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

【问题讨论】:

这些问题似乎更多是关于 SVN 分支和发布工作流程,而不是关于 maven-release-plugin。您是否尝试过从标签创建分支、修复错误,然后从分支中运行 maven:prepare?我用 git 做到这一点。 【参考方案1】:

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

响应 1) 发布时,首先分支,然后立即从分支发布。如果发布插件失败,它可以避免你整理trunk pom。

响应 2) 当您分支时,并且 maven 将主干版本从 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:prepare 和 release:perform 从您的分支版本 1.0.1 修复错误和发布。

使用选项 -DupdateWorkingCopyVersions=false 这样标签版本就不会更新。

使用versions:set插件在分支中设置版本。这可能需要一个 shell 脚本来计算增量版本,或者如果您不经常这样做,则只需手动执行。

【讨论】:

我同意 1),但您似乎可以利用该分支来实现 2)。我没有看到分支标记的意义​​,然后在您可以修复分支中的错误并标记它时重新标记。 当然,根据我的经验,我们会在发布后删除分支。我们从不两次发布一个分支。

以上是关于与 maven-release-plugin 一起使用的正确工作流程是啥?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 maven 不替换 maven-release-plugin 发布版本的环境变量?

使用 maven-release-plugin 部署程序集包

使用 maven-release-plugin 转换术语

maven-release-plugin 和表达式的问题

maven-release-plugin 标签创建

maven-release-plugin,是不是可以不使用分支标签标记 pom.xml