Maven多模块项目持续集成的标准实施规程

时间:2010-05-14 21:37:24

标签: maven-2 continuous-integration

我查了一下,找不到合适的答案:

我们有一个多模块Maven项目,我们希望不断整合。我们想到了两种处理这个问题的策略:

  • 让我们的持续集成服务器(TeamCity,在这种情况下,但我以前使用过其他人,他们似乎有相同的问题)指向聚合器POM文件,并立即构建所有内容
  • 让我们的持续集成服务器指向每个单独的模块

这是否有标准的首选做法?我已经检查了Stack Overflow,谷歌,Continuous Integration book,但没有找到任何东西,但也许我错过了它。

2 个答案:

答案 0 :(得分:6)

哈德森的标准做法至少是你的第一选择。首先,在maven中,如果所有项目都不在反应堆中,那么您的构建可能无法很好地工作。另一方面,尝试使它们成为单独的构建将使您进入快照管理。如果中间的一个发生了变化,并且你试图构建它,那么maven将继续寻找它的依赖关系作为快照。它获得的将取决于其他项目的构建顺序,以及是否发布快照。

如果你有这么多项目,或者这些不相关的项目,构建它们都是一个问题,那么我建议你需要考虑去聚合。使父项成为一个单独的,已发布的项目,为它们中的每一个(或它们的每个子组)提供一个Trunk / Tags / Branches结构,并使它们依赖于版本,而不是快照。

答案 1 :(得分:3)

理想的做法是运行一个反应堆构建,只构建包含更改的模块(使用--projects选项)依赖于它们的模块(使用{{ 3}}选项)。

但TC现在不支持等效功能(检查--also-make-dependents),因此良好的做法是运行完整的反应堆构建(你不希望一个invidual模块打破依赖它的模块被警告,你想保持一致的SNAPSHOTS同步)。