【问题标题】:How to branch multiple module maven project in CVS?如何在 CVS 中分支多个模块 maven 项目?
【发布时间】:2012-09-06 13:26:11
【问题描述】:

我对多模块项目的分支方法有一些疑问。 我在 CVS 上有我的 maven 项目,我打算创建一个分支。 问题是我对给出的建议解决方案不太满意。我应该分支整个项目而不是我正在修改的模块。

这样好吗?

我的意思是,这个模块本身可能是一个项目,但我们将它作为一个模块,以便将所有客户的项目作为模块包装在一个 maven 项目中。

谢谢!

【问题讨论】:

  • 你能举例说明这样一个项目的文件夹结构吗?

标签: java maven branch cvs multi-module


【解决方案1】:

您应该对整个项目进行分支,因为它更简单并且不会产生任何问题。此外,如果您只是分支多模块项目的单个模块,您将遇到问题来发布这样的事情并失去模块之间的同步。

【讨论】:

    【解决方案2】:

    我一直在考虑同样的事情。我什至试图在 maven 用户列表上问这个问题,但我得到的答案很少。这是我认为最好的答案。

    首先,Maven 构建世界的一些现实。

    1) 多模块构建是将一组东西构建在一起的好方法。但我认为它们是比“A 应该在 B 之前构建”的简单用例所要求的更紧密的模块耦合——这种更松散的耦合由 Jenkins 触发器更好地处理。

    2) 多模块构建希望构建为目录树,尽管这不一定总是您想要的。它在源代码控制结构、分支和构建逻辑之间建立了耦合。

    3) 分支是一件复杂的事情,与第 1 点和第 2 点以及您的软件交付/发布模型相关。对于您的开发人员来说,这也可能是一场噩梦。 . .

    我的建议(对我自己和你):

    1) 不要创建您的构建、源代码控制结构、分支或任何东西。 . .手头有我们的一套要求。与软件工程的其他方面一样,需求是必须的。在这个领域,它们似乎比编码更容易被跳过。

    2) 不要分支任何你实际上不需要进行并发开发的东西。如果您的构建结构迫使您对实际上没有看到并发开发的代码进行分支,那么就有问题了。

    3) 获得您的要求后,创建一些可能的构建、scm、发布解决方案并在纸上遍历它们以查看分支和构建如何发挥作用。

    这可能是一个评论,但我实际上不认为有一个简单的“答案”;所以这就足够了。

    【讨论】:

      【解决方案3】:

      我自己考虑了一段时间。我同意@chad 的观点,因为没有直接的答案,这非常令人惊讶,因为必须有数百人面临这个问题。

      我的经验是在 maven+cvs+jenkins 的上下文中,所以请记住,我将提到的一些优势在 jenkins 上下文中确实是优势

      我的看法是,您应该只分支实际上具有不同代码的子模块(基本上是乍得的 #2)。不仅如此,我发现如果你调整规范的 maven 多模块结构,整个分支和构建会变得更好;具体来说,将聚合器 POM 与父 POM 分开,它们通常一起在一个 POM 中。这将为您带来的是,现在在您的构建系统中,您可以完全独立地构建每个子模块 + 父 POM,并根据您的意愿对它们进行分支。如果不将它们分开,像 jenkins 这样的系统将创建自己的子模块,这些子模块是不可分支的。

      所以基本上我的结构是这样的

      root
      --pom.xml (aggregator)
      --parent
      ----pom.xml
      --subModA
      ----pom.xml
      --subModB
      ----pom.xml
      

      为了完整起见,我对整个结构进行分支的最大问题是你有几个相同的分支的一部分。这最终会在您的依赖项中创建复杂性,其中说 subModA 的 v1.1 需要 subModB 的 v1.1 并且会因 subModB v1.0 而失败,而实际上 1.0 会非常好,因为没有任何更改。另一方面,如果您分支但不增加未更改模块中的版本(在我的示例中为 subModB),您将部署完全相同代码的多个快照。这种无用的部署可能会触发不必要的操作(例如测试、QA)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-16
        • 2011-07-05
        • 2014-05-22
        • 1970-01-01
        • 2012-03-06
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        相关资源
        最近更新 更多