3

考虑以下场景:我有一个正在开发的项目,它使用maven构建工具和svn/或其他一些用于版本控制的工具。

在某个时候,我决定它“可能”准备好发布,我设置了一个svn标签将其标记为release candidate

+ Trunk (0.0.1-SNAPSHOT)
|
+----------------------------+ Branch "release-candidate" (0.0.1-SNAPSHOT)
|                            | (goes to QA for testing)
+ Trunk (0.0.2-SNAPSHOT)     | 
| (development continues)    + Tag "release-0.0.1" (0.0.1)
....                           (deploy this revision)

此时我需要pom.xml用新的开发版本更新。保留快照版本,release-candidate直到 QA 完成测试并宣布发布准备就绪。只有这样才能在标签/分支上执行实际的发布 + 部署。

在测试发布候选时,可以在主干中继续开发。

这个两步发布场景可以用 maven 构建实现吗?该release插件是否足以满足此要求,还是我需要其他插件?

4

1 回答 1

3

Maven 发布插件是发布 Maven 项目的事实上的标准,它为此强制执行一些具体的工作流程。正如我所看到的,您有完全不同的假设,但如果您尝试在这里符合 Maven 的约定,Maven Release Plugin 将在这里完成所有工作。

首先,release:branch目标可以帮助您创建一些版本线分支,同时trunk为新开发做好准备。但是,在我看来,release-candidate为每个下一个版本共享此分支名称(此处)绝对不是一个好主意。一个标准的方法是每个版本都做一个发布分支,在实际的最终版本之前稍微完善一下。因此,例如分支名称0.0.1就可以了。顺便说一句,POM 中的release:branch目标更新<scm />标记指向刚刚创建的分支,因此使用共享分支 - 再一次 - 不是一个好主意。

在完善您的候选发布后,您可以像在 Maven 中一样使用非常标准的标准release:prepare来自分支release:perform的调用来进行实际发布。这会创建标签、部署东西等。

现在,如果你真的想修复这个分支名称(因为测试人员的需要或其他原因),你总是可以使用svn:externalsthing 和更新release-candidate别名来始终指向当前的候选发布分支。

于 2012-05-10T07:49:58.547 回答