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,这样
- A依赖于B
- B 依赖于 C
- 并且 D 依赖于 C
C、E、F会同时开始,而D、B只有在C结束后才会开始。对吗?
我的进一步问题是:受抚养人(D 和 B)是否在 parent (C) 为
时立即开始
- 完成compiling/installing但不一定完成测试,或者
- 包括测试在内的一切都完成了吗?
关于我的设置的信息: 我在 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 可以加快速度,尤其是当您有大量模块时。
我一直在四处寻找,希望对使用 -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,这样
- A依赖于B
- B 依赖于 C
- 并且 D 依赖于 C
C、E、F会同时开始,而D、B只有在C结束后才会开始。对吗?
我的进一步问题是:受抚养人(D 和 B)是否在 parent (C) 为
时立即开始- 完成compiling/installing但不一定完成测试,或者
- 包括测试在内的一切都完成了吗?
关于我的设置的信息: 我在 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 可以加快速度,尤其是当您有大量模块时。