Maven Build skips subsodules在另一个模块中取决于依赖性



我已经嵌套了多模块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>

pom.xml在subsodule_a中具有模块

<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>

subsodule_a的子模块的父母是这样的:

<parent>
    <groupId>my.project</groupId>
    <artifactId>specific-parent</artifactId>
    <version>0.0.1</version>
    <relativePath/>
</parent>

重要的是 subsodule_b对sub_submodule_1和sub_submodule_2

具有依赖关系。

当我从main_aggregator构建时,它会失败,并表示无法解决subsodule_b -sub_submodule_1和sub_submodule_2。

在反应堆摘要中,我看到,subsodule_a是首先构建的,并构建了成功,但是它是sub_submodule_1和sub_submodule2。因此,我理解,为什么它因缺失依赖性而失败,但是我不明白的是为什么Maven没有先构建这些依赖项。另外,我不明白为什么在没有构建子模块时,subsodule_a的构建被标记为成功。

Maven版本为3.5.2。

更新:当我在一个线程中运行构建时,没有问题。问题仅在进行并行构建时发生。

update2:在单线线程中运行只是部分成功。请参阅我的答案...

,所以我发现了问题所在。这个问题是某种"复制糊剂异常"。在一个聚合器的subsodule_a中,我从main_aggregator复制了POM。当然,我更改了诸如组ID和Artifact ID之类的主要内容,但我没有更改插件。

引起问题的插件是Javadoc。特别是它的目标。当我删除它时,我可以构建整个项目(但不能并行)。

问题是,显然在平行构建过程中,集合项目"构建"是"秩序",因为它没有依赖关系(subpodule_a启动构建在构建子模型之前)。现在javadoc汇总开始玩。

javadoc聚合分配了每个子模块构建(也许这是错误的术语)。但这不是由依赖项订购的,因此失败了。

并行构建仍然存在问题,因为javadoc在main_aggregator中的汇总目标会导致相同的问题。但这是另一个问题。

我还从中学到了一堂课。如果我将每个模块的整个pom.xml的内容都放在我的问题中,那么有人可能会看到问题。

所以当您问某事时,即使您认为它们无关紧要,也不要隐藏细节:)...

最新更新