1

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

那样行吗?

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

谢谢!

4

3 回答 3

0

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

于 2012-09-06T13:54:21.200 回答
0

我自己考虑了一段时间。我同意@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)

于 2012-12-04T15:53:51.840 回答
0

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

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

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

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

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

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

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

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

3) 在你得到你的要求之后,创建一些可能的构建、scm、发布解决方案,并在纸上浏览它们,看看分支和构建是如何发挥作用的。

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

于 2012-09-06T16:06:52.143 回答