代码之家  ›  专栏  ›  技术社区  ›  James Kingsbery

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

  •  7
  • James Kingsbery  · 技术社区  · 14 年前

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

    我们有一个多模块的Maven项目,我们希望持续集成。我们考虑了两种应对策略:

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

    有没有一个标准的,首选的做法?我检查过堆栈溢出,谷歌 Continuous Integration book 没有发现任何东西,但也许我错过了。

    2 回复  |  直到 14 年前
        1
  •  6
  •   bmargulies    14 年前

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

    如果您有这么多的项目,或者这样不相关的项目,以至于构建它们都是一个问题,那么我建议您考虑分散聚合。使父级成为一个单独的、已发布的、项目,给它们中的每个(或它们的每个子组)一个主干/标记/分支结构,并使它们依赖于发布,而不是快照。

        2
  •  3
  •   Pascal Thivent    14 年前

    理想的做法是运行一个反应堆构建,只构建包含变更的模块(使用 --projects 选择权 依赖于它们的模块(与 --also-make-dependents 选择权。

    但是TC目前不支持同等的功能(检查 TC 5 EA: Maven 2 dependency triggers not working... )因此,好的做法是运行一个完整的反应堆构建(您不希望一个invidual模块破坏依赖它的模块而不被警告,您希望保持一致的快照集同步)。