Maven多线程构建:强制打包模块最后运行

时间:2013-09-18 16:17:31

标签: java multithreading maven

我有一个具有以下结构的多级maven项目:

+ project
    + subproject1
        + 1_module1
        + 1_module2
        + 1_module3
        + 1_module3
    + subproject2
        + 2_module1
        + 2_module2
        + 2_module3
        + ...
    + subproject3
        + 3_module1
        + 3_module2
        + 3_module3
        + ...
    + packaging-project

packaging-project打包子项目的构建工件,并在pomsubproject1subproject2上声明subproject3类型依赖项。这(正确地)将它放在reactor构建顺序中的最后一个,因此这对于单线程构建来说非常好。

但是,使用多线程构建(例如mvn -T4packaging-project构建由maven 执行,之后构建所有子项目模块。

我发现的一个解决方案是明确地将每个子项目的每个模块列为packaging-project中的依赖项。但是,这很烦人且很脆弱 - 每次创建新模块时,都必须在packaging-project中明确列出,否则可能会破坏构建。

另一种解决方案是通过配置文件运行packaging-project,然后在主构建之后的单独mvn调用中显式执行它。这是一个很好的解决方案,但在构建时需要额外的步骤。

是否有另一种方法可以在packaging-project和列出的子项目的每个模块之间声明构建顺序依赖关系,而无需将每个子项目的每个子模块明确声明为依赖项?

1 个答案:

答案 0 :(得分:0)

据我所知,使一个模块构建依赖于其他模块的唯一方法是使它们成为该构建的依赖关系,因为您声明具有手动维护的列表。您的描述应该为您提供线索:该模块依赖在另一个模块上。