Maven 多线程构建如何工作?

How do the Maven Multithread builds work?

我一直在四处寻找,希望对使用 -T 选项时 Maven 究竟如何执行 multi-module 项目的构建进行一些澄清。在他们的 confluence page 上,他们注意到

This build-mode analyzes your project's dependency graph and schedules modules that can be built in parallel according to the dependency graph of your project...

据我了解,如果我执行 mvn clean install -T 4 我有模块 A、B、C、D、E 和 F,这样

C、E、F会同时开始,而D、B只有在C结束后才会开始。对吗?

我的进一步问题是:受抚养人(D 和 B)是否在 parent (C) 为

时立即开始
  1. 完成compiling/installing但不一定完成测试,或者
  2. 包括测试在内的一切都完成了吗?

关于我的设置的信息: 我在 Maven 3.3.3 和 Maven 3.1.1 上都遇到过这种情况。我目前正在使用 Java 1.7.0_79

正如您在 graphic they start off are based on their levels 上看到的那样。所以我假设一旦所有这些模块(第 1 级)完成,模块 C、E 和 F 将首先启动,模块 B 和 D 的下一个级别将启动,最后是模块 A。

模块内的执行基于生命周期,这意味着模块将 运行 生命周期的所有阶段,例如,如果您这样做 mvn -T 4 package 所有模块将 运行所有周期,包括包周期。 如果你 运行 mvn -T 4 install 所有模块 运行 所有生命周期步骤(其中包含测试阶段)...

smart-builder 可以加快速度,尤其是当您有大量模块时。