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

Ram*_*man 5 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
Run Code Online (Sandbox Code Playgroud)

打包packaging-project子项目的构建工件,并声明、和pom的类型依赖关系。这(正确地)将其放在反应器构建顺序的最后,因此这对于单线程构建来说非常完美。subproject1subproject2subproject3

然而,对于多线程构建(例如mvn -T4),构建是在所有子项目模块构建之前packaging-project由 maven 执行的。

我发现的一个解决方案是明确列出每个子项目的每个模块作为packaging-project. 然而,这很烦人和脆弱——每次创建新模块时,都必须将其显式列出,packaging-project否则可能会破坏构建。

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

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