仅在主干时使用Maven释放应包含发行版本

时间:2014-11-03 14:05:29

标签: maven svn configuration-management

通常mvn:release prepare将(除其他事项外)

  • 将工件版本更新为发行版并提交
  • 从发布版本
  • 分支到标记
  • 将工件版本更新为下一个SNAPSHOT版本并提交

它运作良好。但是,我们有一种新的工作方式:

  • 所有开发都在我们的branches/features分支
  • 中完成
  • trunk必须只有发布版本

我们希望发布如下工作:

  1. 我们在features
  2. 工作
  3. 发布后,应该已经完成​​从featurestrunk的合并。 trunk中的任何内容都不应该保存,这不会是一个问题,因为那里不应该做任何工作。换句话说,在发布时,trunk应该镜像发布版本
  4. 来自trunk的标签应该已经制作
  5. 在SVN中看起来像这样:(R =发行版,S = SNAPSHOT版)

             1.0.1-SNAPSHOT
             |
             |        1.0.2-SNAPSHOT
             |        |
             |        |    1.0.3-SNAPSHOT
             |        |    |
             |        |    |           1.0.4-SNAPSHOT
             |        |    |           |
             | : :    |    | : : : :   |
    
    features S-S-S-R--S--R-S-S-S-S-S-R-S->
    
                   |     |           |
                  \|/   \|/         \|/
                   V     V           V
    
    trunk    ------R-----R-----------R--->
    
                   |     |           |
                  \|/   \|/         \|/
                   V     V           V
    
    tag      ------R-----R-----------R--->
    
                   |     |           |
                   |     |           |
                   1.0.1 |           1.0.3
                         |
                         1.0.2
    
    • 怎么办呢?
    • 可以/应该单独使用发布插件吗?我们已经使用了这个插件,所以它会很好。
    • 可以/应该使用任何其他标准插件吗?

1 个答案:

答案 0 :(得分:0)

是的,发布插件似乎接近您想要做的?我不确定你的问题是什么?

令人眼前一亮的是,躯干中的内容似乎有些含糊不清,不应该有什么。你需要小心不要开始对抗maven:

“ - SNAPSHOT”表示工作版本 - 我知道您知道:)

由于您处理功能分支并合并到将成为工作版本的主干。从这里开始,您需要集成所有功能并验证它们是否协同工作。这就是为什么trunk会有SNAPSHOT版本。

完成此操作后,您可以使用release插件从此处标记/分支。

因为树干必须反映你实际交付的东西(稳定的分支,所以说)。我认为创建一个临时分支可能有助于保持清晰:你可以创建一个用于集成功能分支的“开发者”分支。一旦没问题,将这些更改合并到您的主干中。

主要是你会关注http://nvie.com/posts/a-successful-git-branching-model/ (如果在这里使用SVN,也可以使用SVN)

请注意,功能分支也有一些缺点:http://martinfowler.com/bliki/FeatureBranch.html

来自Neil Ford的3集视频。在Episode 2中,他提供了一些功能分支的替代方案。

回到maven:你需要在你的主干上有一个SNAPSHOT版本,发布插件不会像其他任何东西一样。没有SNAPSHOT的回购中唯一的东西是在标签上。那些版本是固定的。任何维护分支也将有一个SNAPSHOT版本(一个独特的版本)。功能分支通常与他们将要合并的目标分支共享版本。注意:CI服务器不应将“mvn deploy”或“mvn install”功能分支放入公共共享存储库。