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

Maven 2 Maven多模块项目持续集成的标准实施规程,maven-2,continuous-integration,Maven 2,Continuous Integration,我四处查看,找不到一个很好的答案: 我们有一个多模块Maven项目,我们希望不断地集成它。我们想到了两种应对策略: 让我们的持续集成服务器(在本例中是TeamCity,但我以前使用过其他服务器,它们似乎有相同的问题)指向聚合器POM文件,然后立即构建所有内容 让我们的持续集成服务器指向每个单独的模块 是否有一个标准的、首选的做法?我检查了Stack Overflow,Google,the,但没有找到任何东西,但可能我没有找到它。至少哈德逊的标准做法是您的第一选择。首先,在maven中,如果所

我四处查看,找不到一个很好的答案:

我们有一个多模块Maven项目,我们希望不断地集成它。我们想到了两种应对策略:

  • 让我们的持续集成服务器(在本例中是TeamCity,但我以前使用过其他服务器,它们似乎有相同的问题)指向聚合器POM文件,然后立即构建所有内容
  • 让我们的持续集成服务器指向每个单独的模块

是否有一个标准的、首选的做法?我检查了Stack Overflow,Google,the,但没有找到任何东西,但可能我没有找到它。

至少哈德逊的标准做法是您的第一选择。首先,在maven中,如果所有项目都不在反应堆中,那么构建可能无法很好地工作。另一方面,尝试将它们分开构建会让您陷入快照管理的困境。如果中间的一个改变了,你尝试建立它,Maven会去寻找它的依赖关系作为快照。它得到什么将取决于其他项目的生成顺序,以及是否发布快照


如果你有这么多的项目,或者这些不相关的项目,建立它们都是个问题,那么我建议你需要考虑DIS聚合。使父级成为一个独立的、已发布的项目,为每个子组(或子组)提供一个主干/标记/分支结构,并使它们依赖于发布,而不是快照。

理想的做法是运行反应器构建,只构建包含更改的模块(带有选项)依赖于它们的模块(带选项)


但是TC目前不支持等效功能(请检查),因此最好运行完整的反应堆构建(您不希望一个不受警告的模块破坏依赖它的模块,您希望保持一致的快照集同步)。

谢谢!Hudson是否支持您链接到的高级反应堆选项?@JamesKingsbery No.但它确实提供了类似的配置选项(“构建快照依赖项时构建”)。