Maven从Tagged Release Candidate或Branch发布

时间:2012-05-10 07:30:05

标签: svn maven

请考虑以下情形:我正在使用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.xmlrelease-candidate保留快照版本,直到QA完成测试并声明发布准备就绪。只有这样才能在标签/分支上执行实际的发布+部署。

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

这个两步发布方案是否可以通过maven构建实现? release插件是否足够用于此或我是否需要其他插件?

1 个答案:

答案 0 :(得分:3)

Maven Release Plugin是发布Maven项目的事实标准,它为此强制实施一些具体的工作流程。正如我所看到的,你有很多不同的假设,但如果你想在这里尝试适应Maven的惯例,Maven Release Plugin会在这里完成所有工作。

首先,release:branch目标可以帮助您创建一些版本行分支,同时使trunk中的版本准备好进行新的开发。但是,在我看来,为每个下一个版本共享此分支名称(release-candidate此处)并不是一个好主意。相反,这里的标准方法是在每个版本中执行一种发布分支,其中的东西在实际的最终版本之前稍微抛光。因此,分支名称0.0.1例如可以。顺便说一下,release:branch目标在POM中更新<scm />标记指向刚创建的分支,因此使用共享分支 - 再一次 - 不是一个好主意。

在对发布候选版本进行抛光后,您可以使用非常标准的release:preparerelease:perform来自分支的进行实际发布,就像在Maven中一样。这会创建标记,部署内容等。

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