解决maven错误:项目'XYZ'在反应堆中重复

问题描述 投票:6回答:5

我正在创建一个多模块项目,用于构建许多其他相关项目。其中一些项目也是多模块项目,在某些情况下,它们构建相同的子项目。 Maven对我大吼大叫,但这是有意的,无论如何我还是想建立它。

有没有人解决这个问题?谢谢。

maven-2
5个回答
3
投票

我认为你不应该这样做。 (您可以尝试定义一个配置文件 - 假设一个完整的构建配置文件,您可以确保每个模块只编译一次,另一个配置文件在您执行子构建时添加其他模块。)

但你最好采用maven方式 - 每个项目都应该只包含来自其目录的模块目录,例如:只有直接的孩子。

Maven有一些非书面的隐式假设,例如 - 总是从父目录中的pom继承子模块,例如:继承树必须与您的目录树匹配,否则某些插件将无法工作,例如发布插件或一些报告插件。

简短的回答是 - 在maven中,您不能在项目层次结构/树中有两次模块。

maven中有很多错误的方法,因此必须坚持已知的工作方式 - 比如pom层次结构==目录结构。


7
投票

当你有这样的结构时会发生这种情况:

+-- root-project-A
    `-- pom.xml
    +-- module-A
    |   `-- pom.xml
    +-- module-B
    |   `-- pom.xml
    +-- root-project-B
        `-- pom.xml
        +-- module-C
            `-- pom.xml

并配置你的模块如下:

|-- root-project-A
    `-- pom.xml
        <modules>
         <module>module-A</module>
         <module>module-B</module>
         <module>root-project-B</module> <!-- Error: project A reference project B -->
         <module>root-project-B/module-C</module> <!-- Error: project A reference project B -->
        </modules>

|-- root-project-B
    `-- pom.xml
        <modules>
         <module>module-C</module>
        </modules>

项目A不能引用项目B,因为B不引用A作为父项。包裹必须是独立的


0
投票

您是否尝试过其中一个命令行选项?

-fae,--fail-at-end            Only fail the build afterwards; allow all
                              non-impacted builds to continue
-fn,--fail-never              NEVER fail the build, regardless of project
                              result

0
投票

听起来您可能从几个项目构建的“相同子项目”是所有这些项目的依赖项。将其移动到目录树中的高级别,并将其声明为所有需要它的项目pom中的依赖项。它将由您构建的第一个需要它的项目构建,其余的将看到您“在那里,完成了”并跳过它。


0
投票

对我来说,<artifactId>对于他们的pom中的2个不同模块是相同的,并且导致了这个错误。 一旦改变,它工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.