请考虑以下情形:我正在使用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
插件是否足够用于此或我是否需要其他插件?
答案 0 :(得分:3)
Maven Release Plugin是发布Maven项目的事实标准,它为此强制实施一些具体的工作流程。正如我所看到的,你有很多不同的假设,但如果你想在这里尝试适应Maven的惯例,Maven Release Plugin会在这里完成所有工作。
首先,release:branch
目标可以帮助您创建一些版本行分支,同时使trunk
中的版本准备好进行新的开发。但是,在我看来,为每个下一个版本共享此分支名称(release-candidate
此处)并不是一个好主意。相反,这里的标准方法是在每个版本中执行一种发布分支,其中的东西在实际的最终版本之前稍微抛光。因此,分支名称0.0.1
例如可以。顺便说一下,release:branch
目标在POM中更新<scm />
标记指向刚创建的分支,因此使用共享分支 - 再一次 - 不是一个好主意。
在对发布候选版本进行抛光后,您可以使用非常标准的release:prepare
和release:perform
来自分支的进行实际发布,就像在Maven中一样。这会创建标记,部署内容等。
现在,如果你真的想要修改这个分支名称(因为测试人员的需要或其他东西),你总是可以使用svn:externals
的东西并更新release-candidate
别名来始终指向当前的候选版本分支。