我有几个在不同分支上开发和发布的项目,即发展 and release。这个过程运行得很好,但不幸的是它有一些缺点,我一直想知道是否有更好的版本控制方案适用于我的情况。
主要开发发生在开发分支上(即 Subversiontrunk但这并不重要)开发团队在哪里提交更改。构建和打包工件后,Jenkins 将它们部署到 Maven 存储库和开发集成应用程序服务器。这是一个开发快照,基本上只是一个特征分支 http://martinfowler.com/bliki/FeatureBranch.html包含一个公共分支上的所有已开发功能:
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>D.16-SNAPSHOT</version>
当 QA 团队完成并请求一项特定业务变更时,这一单一变更将被合并到发布分支(分支/发布)。 Jenkins 将生成的工件部署到 QA 应用程序服务器:
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>R.16-SNAPSHOT</version>
然后,通过 maven-release-plugin 在软件的发布分支版本上进行发布(它创建一个维护标签/分支以快速修复错误)。 (R.16-快照 => R.16)
开发和发布分支当前版本分别为 D.16-SNAPSHOT 和 R.16-SNAPSHOT。这允许在 Maven 存储库中分离工件,但会产生依赖于标准 Maven 版本控制风格的不同 Maven 机制的问题。这也破坏了 OSGI 版本控制。
现在,您将如何在这样的方案中命名和版本 Maven 工件?有没有更好的办法?除了简单地更改版本控制和命名方案之外,也许我可以对 Maven 结构进行一些更改?但我需要将开发和 QA(发布)SCM 分支分开。
“开发”/“生产”的专家分类器是一个合理的选择吗?
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>16-SNAPSHOT</version>
<classifier>D</classifier>