在Hudson的构建目标和发布的标准方法中进行'mvn deploy'

His*_*His 5 java maven-2 hudson release release-management

我使用构建目标为我的项目设置Hudson,mvn clean deploy site:site每隔午夜运行一次构建,并且每当有新的更改时.

我一直想知道的一件事是我是否应该包含deploy在构建目标中,因为如果我刚刚发布了我的项目的1.0.0版本(我已经将pom更改为版本1.0.0并提交了它),那么可能会发生这种情况.还没有将版本号增加到1.0.1-SNAPSHOT几天,我最终会在不同的时间部署多个不同的1.0.0版本.

但我看到人们正在使用deploy哈德森的构建目标 - 我想知道他们是如何处理这个问题的.

实际上与Maven一起发布的正确方法是什么?感谢您的任何指示!

HDa*_*ave 9

您应该继续从Hudson进行自动夜间部署,但是关于如何处理版本号和版本的更大问题与您的源代码控制系统无关.您没有提到您正在使用哪种源代码控制系统,但我可以使用Subversion解释如何执行此操作.

首先,你提到的原因,你应该永远在树干改变你的源代码的版本标识符比快照版本(例如与其他任何东西-SNAPSHOT就完了).否则,您将在重新部署时覆盖.最佳做法是(暂时)将主干pom(s)中的版本标识符更改为要发布的版本,标记主干,从标记构建,然后部署从标记生成的构建,然后立即提升trunk中的快照版本标识符,最后使用较新的较高快照版本号提交trunk.

如果这看起来很麻烦,那么您应该知道Maven Release Plugin将依靠Maven SCM插件自动完成所有这些操作,以便与您的源代码控制系统一起工作.

虽然我已经喜欢从Hudson那里调用Maven Release Plugin,但这是一件非常敏感的事情.为了使其正常运行,这里有一些提示:

  • 真正的版本需要由Hudson执行,但开发人员当然也可以从他们的开发机器上执行它们来测试发布过程.请确保之后删除Subversion中的任何标记以及Nexus中的任何发布工件.
  • 它使用maven-scm-plugin,而后者又要求外部安装的subversion版本在当前路径上.因此,版本的subversion也必须已经缓存了写入subversion源存储库所需的凭据.
  • 如果一个发布过程在中途自行中止,你可以做一个发布:回滚来修复poms,但这不会消除任何已经提交给subversion的伪标签.在进行svn更新后,您必须手动删除这些内容.
  • 发行版:回滚目标有时不会将pom.xml版本返回给SNAPSHOT.如果出现任何问题,请检查POM版本以确保使用"SNAPSHOT".
  • 版本:回滚目标有时不会将SCM URL返回到其原始位置.如果出现任何问题,请检查这些是否指向"主干"或原始分支.
  • 因为我们使用Subversion,所以maven-release-plugin的配置启用了{{suppressCommitBeforeTag}}选项,该选项消除了在修改trunk pom.xml文件之前修改trunk pom.xml文件的额外提交.

另请注意,Maven Release Plugin与Hudson集成,但不需要从Hudson调用Maven发布插件目标,它只是让它更容易,但是,我没有运气让这个插件工作.

总结一下:

  1. 仅使用SNAPSHOTS从主干部署
  2. 在发布期间使用Maven发行版插件从标记进行部署.

希望这可以帮助.