Maven的概念是否适用于CI / CD?

时间:2017-10-11 16:25:00

标签: maven continuous-integration continuous-delivery gated-checkin

我知道快照正在开发中,即1.0-SNAPSHOT最终会以1.0发布。

但为什么我需要它?

以下是流程:

  • 我使用语义版本化Major.Minor.Revision[.Build]模型开发库。
  • 我明确定义MajorMinor,而Revision(或Build)由CI / CD管道自动递增
  • 接受PR并成功运行gated build后,新版本将发布到公司的私人存储库。
  • 在依赖项目中,我指定精确版本或浮动版本Major.+

这里有SNAPSHOT的地方吗?

1 个答案:

答案 0 :(得分:2)

这是一个很大的话题。让我评论一下与我们公司相关的一些观点。

  • 我们构建包含具有大依赖关系树的jar的ear文件。在开发过程中,您经常需要在树中深入修复。如果您使用SNAPSHOT版本,每个人都将在下一个版本中自动绘制这些更改。如果使用构建号,则结果必须从下到上传播,即如果您具有依赖性层次结构A - > B - > C和你构建一个新版本的C,你需要一个新版本的B,然后是一个新版本的A.或者,你可以在最高级别(在我们的例子中是耳朵级别)管理具有dependencyManagement的版本,以避免重建之后的所有内容jar C中的错误修正更改。

  • 我们的开发人员需要构建"半功能"在开发过程中向客户展示。这些通常构建为SNAPSHOT版本,而不是放入部署管道。 SNAPSHOT版本允许您在语义上将这些版本与那些旨在提高效率的版本区分开来。

  • SNAPSHOT和发布版本之间的区别可以用作猜测工件质量的快速方法(如果所有工件都有数字xyz,这是好的,哪些是坏的?)

  • 构建可重复性是一个重要的目标,但从与开发人员的讨论中我知道对此有不同的看法。一些开发人员重视版本更新是否发生"自动" - 他们说"最新版本总是正确的版本,我为什么要做所有这些手动更新?"