我查了一下,找不到合适的答案:
我们有一个多模块Maven项目,我们希望不断整合。我们想到了两种处理这个问题的策略:
这是否有标准的首选做法?我已经检查了Stack Overflow,谷歌,Continuous Integration book,但没有找到任何东西,但也许我错过了它。
答案 0 :(得分:6)
哈德森的标准做法至少是你的第一选择。首先,在maven中,如果所有项目都不在反应堆中,那么您的构建可能无法很好地工作。另一方面,尝试使它们成为单独的构建将使您进入快照管理。如果中间的一个发生了变化,并且你试图构建它,那么maven将继续寻找它的依赖关系作为快照。它获得的将取决于其他项目的构建顺序,以及是否发布快照。
如果你有这么多项目,或者这些不相关的项目,构建它们都是一个问题,那么我建议你需要考虑去聚合。使父项成为一个单独的,已发布的项目,为它们中的每一个(或它们的每个子组)提供一个Trunk / Tags / Branches结构,并使它们依赖于版本,而不是快照。
答案 1 :(得分:3)
理想的做法是运行一个反应堆构建,只构建包含更改的模块(使用--projects
选项)和依赖于它们的模块(使用{{ 3}}选项)。
但TC现在不支持等效功能(检查--also-make-dependents
),因此良好的做法是运行完整的反应堆构建(你不希望一个invidual模块打破依赖它的模块被警告,你想保持一致的SNAPSHOTS同步)。