在进行持续交付时,自动化项目版本的 Maven 方法是什么?

我有一个Web应用程序,每当一个功能准备就绪时,我们就会部署到生产环境,有时可能是每天几次,有时可能是两个版本之间的几周。

目前,我们没有增加项目的版本号,而且所有内容都已经停留在版本上一年多了。我想知道为Web应用程序进行持续交付的Maven方法是什么。在每次提交时增加版本号似乎有些过分,而且从来没有像我们现在所做的那样增加版本号,这似乎也是错误的。0.0.1-SNAPSHOT

对于这种类型的 Maven 用法,推荐的最佳实践是什么?

这个问题实际上是双重的:

  • 在单个文件中推进项目版本号(可能有很多)。pom.xml
  • 更新所有依赖组件中的版本号,以使用彼此的最新版本号。

答案 1

我推荐以下演示文稿,讨论使用 Maven 进行持续交付的实际情况:

关键是每个版本都是一个潜在的版本,因此不要使用快照。


答案 2

这是我根据Mark O'Connor的答案链接的视频进行的总结。

  • 该解决方案需要像 git 这样的 DVCS 和像 Jenkins 这样的 CI 服务器。
  • 不要在持续交付管道中使用快照生成,也不要使用 maven 发布插件。
  • 快照版本(如)将转换为真实版本,例如 Jenkins 作业编号。1.0-SNAPSHOT1.0.buildNumberbuildNumber

算法步骤:

  1. Jenkins 将 git 存储库与源代码克隆,并说源代码有版本1.0-SNAPSHOT
  2. Jenkins 创建了一个名为 git 分支,以便将快照版本转换为真实版本1.0.JENKINS-JOB-NUMBER1.0.124
  3. Jenkins 调用 maven 版本插件将 pom.xml 文件中的版本号从 更改为1.0-SNAPSHOT1.0.JENKINS-JOB-NUMBER
  4. 詹金斯调用mvn install
  5. 如果成功,那么 Jenkins 将提交分支,并在 git 中创建一个真正的非快照版本,并在 git 中使用适当的标记进行复制。如果失败,那么 Jenkins 将只删除新创建的分支并使构建失败。mvn install1.0.JENKINS-JOB-NUMBERmvn install

我强烈推荐从马克的答案链接的视频。


推荐