当root pom具有两个或多个子模块共有的插件时,Maven Cyclic引用

时间:2016-04-04 15:46:36

标签: java maven plugins pom.xml

所以我的项目结构如下 - :

pom.xml
\
 ---Module A (Child)
 ---Module B (Maven child  plugin with Dependency on A)
 ---Module C (Child Dependency on A)
 ---Plugin B

父pom看起来如下

<modules>
<module>A</module>
<module>B</module>
<module>C</module>
</modules>

<plugins>
<plugin>
  B
</plugin>
</plugins>

P的POM没有依赖关系,只有父 - : 父

B的POM

<parent>parent</parent>
<dependencies>
      <dependency>A</dependency>
</dependencies>

C的POM也有

<parent>parent</parent>
<dependencies>
      <dependency>A</dependency>
</dependencies>

有了上述内容,maven会给我以下错误 - :

org.apache.maven.ProjectCycleException:reactor中的项目包含循环引用:

'B'和'A'之间的边缘在图A-> parent-&gt; B-&gt; A

中引入循环

我做错了什么以及我应该如何构建项目?我希望将所有内容保存在一个地方。

1 个答案:

答案 0 :(得分:1)

您应该将父插件中的插件声明移动到pluginManagement标记中,以便您可以设置版本(但实际上不使用它),然后在需要插件的单个项目中,只需命名插件在plugins标记中。

此外,如果A取决于B,则B无法使用插件A。对不起,不能做;你需要找到一种方法让一个人没有另一个。另外,我不认为B可以将自己用作插件,因为在它甚至可以开始构建B之前必须解决它。 C以及任何其他模块(DE等)可以使用B