2012-05-10 78 views
3

请考虑以下情形:我正在开发一个项目,使用maven作为构建工具,svn或其他一些版本控制工具。从标签发布候选版本或分支发布Maven

在某些时候,我决定,这是“可能”准备释放和我设置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插件是否足够用于此目的,还是我需要其他人?

回答

3

Maven发布插件是发布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别名总是在当前点发布候选分支。

+0

实际上,我正在使用jenkins作业的固定版本候选分支。我喜欢用这个作为别名的想法。谢谢。 – Yashima