2011-10-07 69 views
1

我正在使用Maven过去2个月。我认为我只理解它,但还不确定:)我获得了编译,安装并部署到团队存储库的Snapshot构建。Maven发布过程问题(发布插件的任何替代方案)

因此,该计划是为开发环境使用Snapshot构建的,一旦稳定告诉QA团队将其用于QA,并且一旦QA接受构建,就将相同的构建推广到生产环境。

我的要求,如果快照构建发现是好的。我需要生产中的确切位数。 如果我使用release插件,它会标记并重建源代码并检出标签并进行部署(在流程中从版本字符串中删除SNAPSHOT)。这里的问题是,我不能保证它具有与QA接受的快照构建相同的位。

此外,我觉得标记构建是多余的,因为Jar manifest具有SVN修订版。所以我总是可以回到那个SVN修订版来从Maven工件Jar中回溯构建。

所以我的问题,是否有一种简单的方法来促进发现可以被QA团队接受的快照构建?

回答

1
  1. 您可以在将快照发送到QA后立即打开分支。
  2. 锁定发送给QA的主分支/主干。
  3. 如果接受,请使用接受的分支/主干上的发布插件。
  4. 将主体上的pom升级为下一个SNAPSHOT,并在openned分支上添加任何内容时合并。
2

如果使用快照,则不能有'相同的位'。您可以从完全相同的源构建位。使用build-number-plugin将源代码管理版本捕获到构建中。当QA喜欢它时,标记该修订并制作分支。然后手动将版本号设置为所需的发行版本。或者,停止用脚踩在脚上,并按照预期使用释放插件。

您需要使用发布阶段。运行发行版插件以生成带有标签的真实发行版,但是在暂存区(通过Nexus Pro,Archiva的下一个版本或altDeploymentUrl的使用)中关闭了工件。有QA测试中转区版本。如果他们保佑它,那么将这些小部分推广到正式版本区域。如果QA记录它,请删除标签并删除临时区域。

因此,您可以完成测试您想要运送的位。

+1

感谢您的回复。尽管我希望Maven能够轻松地推广快照,但不会影响比特数。 – devPassions

+1

它不能。在你的jar里面是一个包含POM的META-INF区域,它包含 ....- SNAPSHOT。如果你的项目是多部分的,那么这些部分就相互依赖,所有*这些*版本都是-SNAPSHOT。他们不能被维持不变。 – bmargulies

2

我也在研究这个问题。我是一名核心Maven用户,我仍然用发布插件将我的头靠在墙上(特别是在与Mercurial一起使用时)。

下面是我碰到的一些额外的,相关链接:

这最后一个仍然依赖于maven-release-plugin,但至少它更深入地探讨了使用它的缺陷。

我们正在考虑使用我们自己的脚本来管理流程,使用Maven更新版本号(例如mvn versions:set -DnewVersion=1.1.0),但实现我们自己的分支/标记/提交工作流程。

+0

您可以让您的CI服务器负责部署。这是[Artifactory与TeamCity集成](http://wiki.jfrog.org/confluence/display/RTF/TeamCity+Artifactory+Plugin+-+Release+Management)的例子。我相信Jenkins/Nexus或者你正在使用的任何组合都可以做到这一点。我会添加这个作为答案。 – maba

0

一种方法是让CI服务器与二进制存储库一起使用。你可以完全跳过maven-release-plugin

这是一个如何使用TeamCity Artifactory Plugin - Release Management执行的示例。

我相信,如果您使用另一个CI服务器(如Jenkins),并且还可以与其他二进制存储库(如Nexus)一起使用,那么也有相同的可能性。

1

这里有一个精彩的博客,描述了使用maven release插件的一个相当简单的选择。我们将在我们的项目中使用这种策略的一种改进,它可以避免发布插件的许多问题和复杂性。

Maven Releases on Steroids