我有这样的嵌套多模块maven结构:
main_aggregator
|- submodule_A
| |- sub_submodule_1
| |- sub_submodule_2
|- submodule_B
|- submodule_C
main_aggregator 中的 pom.xml 在模块中有这个
<modules>
<module>submodule_A</module>
<module>submodule_B</module>
<module>submodule_C</module>
</modules>
submodule_A 中的 pom.xml 在模块中有这个
<modules>
<module>sub_submodule_1</module>
<module>sub_submodule_2</module>
</modules>
main_aggregator 的子模块的父级是这样的:
<parent>
<groupId>my.project</groupId>
<artifactId>main-parent</artifactId>
<version>0.0.1</version>
<relativePath/>
</parent>
submodule_A 的子模块的父级是这样的:
<parent>
<groupId>my.project</groupId>
<artifactId>specific-parent</artifactId>
<version>0.0.1</version>
<relativePath/>
</parent>
重要的是submodule_B 依赖于 sub_submodule_1 和 sub_submodule_2
当我从 main_aggregator 运行构建时,它失败并说它无法解决 submodule_B - sub_submodule_1 和 sub_submodule_2 的依赖关系。
在我看到的反应器摘要中,首先构建了 submodule_A 并且构建成功,但它是子模块 - sub_submodule_1 和 sub_submodule2 被跳过。所以我明白了,为什么它会在缺少依赖项时失败,但我不明白为什么 maven 没有首先构建这些依赖项。我也不明白为什么 submodule_A 的构建在子模块甚至没有构建时被标记为成功。
Maven 版本是 3.5.2。
更新:当我在一个线程中运行构建时,没有问题。仅在进行并行构建时才会出现问题。
Update2:在单线程中运行只是部分成功。看我的回答...