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

Bri*_*ris 7 maven-2

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

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

sid*_*dev 9

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

但是你最好采用 maven 的方式——每个项目都应该只包含它自己目录中的目录作为模块,例如只包含直接子项。

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

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

maven 中有很多错误的方法,因此必须坚持使用已知有效的方法——比如 pom 层次结构 == 目录结构。


Ali*_*mes 8

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

+-- root-project-A
    `-- pom.xml
    +-- module-A
    |   `-- pom.xml
    +-- module-B
    |   `-- pom.xml
    +-- root-project-B
        `-- pom.xml
        +-- module-C
            `-- pom.xml
Run Code Online (Sandbox Code Playgroud)

并配置你的模块如下:

|-- 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>
Run Code Online (Sandbox Code Playgroud)

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


小智 6

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


小智 5

在我的例子中,IntelliJ 放入<module>parentModule/XYZ</module>父模块 pom.xml

因此,请使用“查找全部”( CTRL+SHIFT+F ) 'XYZ' 检查最终的错误