当前位置: 首页 > 知识库问答 >
问题:

当根pom有两个或更多子模块共有的插件时,Maven循环引用

山凌
2023-03-14

所以我有一个结构如下的项目-

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>

POM for A没有依赖项,只有父级-:父级

聚甲醛为B有

<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中的循环-

我做错了什么?我应该如何构建项目?我想把所有东西都放在一个地方。

共有1个答案

云韬
2023-03-14

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

此外,如果B依赖于A,则A不能使用插件B。对不起,无法完成;你需要找到一种方法,让其中一个不用另一个。此外,我不认为B可以将其自身用作插件,因为这必须在它开始构建B之前解决<代码>C和任何其他模块(DE等)都可以使用B

 类似资料:
  • 问题内容: 我们有一个与我们一起工作的人,他使用maven-assembly- plugin打包所有依赖项。从那以后他就离开了公司,我正在努力弄清楚他是如何做到的。我现在正在学习有关maven-assembly-plugin的信息。 我们的应用程序分为与相关模块项目一起的Maven POM项目。在下面的示例中,我包含了运行时模块项目。我试图在我的应用程序中创建一个名为运行时的模块项目,但是一旦进行

  • 问题内容: 有一个使用一个py文件(模块)构建可执行文件的示例,如下所示,我大约有4个py文件(模块),我想构建应包含所有py文件的可执行文件。 当我们有一个以上的python模块时,如何构建python可执行文件? 这里的例子 如果我有两个文件hello1.py和hello2.py,则此文件具有hello.py? 谢谢 问题答案: 如果您的文件导入了这些文件-和,则此行: 够了。 但是,如果这些

  • 我正试着做一个包含所有项目的胖uber罐子。如果我做了“MVN包”,我得到一个uber jar下的“blah”项目标签文件夹。(blah项目有主类。)uber jar包含所有项目(作为文件夹而不是jar),但当我运行它时,它似乎无法识别feature1和feature2项目。 我在上面添加了feature1和feature2的依赖项,以便它们在uber jar文件中。这错了吗?附注。blahmes

  • 我们有一个模块化项目,包含大约10个工件: 此外,一些工件之间存在依赖关系: 我们当前的设置如下所示: parent是包含父POM的工件 这个父POM定义了所有必要的依赖项(比如Spring、JPA等等)进来 我们所有的工件也都在中定义 我们的工件将父工件称为明显的父工件 只有父POM定义版本。其他所有的POM都没有 我们使用三个数字的版本控制方案: 例如: 问题是: 一旦我们更改了工件的版本(例

  • 我有一个多模块的maven项目,我需要启动它通过mvn清洁安装 由于某些子模块中没有liferay插件,因此我有以下错误:[错误]在当前项目和插件组[org.apache.maven.plugins,org.codehaus.mojo]中找不到前缀“liferay”的插件,这些插件组可从存储库[local(C:\Users\xxxxxxx.m2\repository),central获得(http

  • 问题内容: 乍看之下,这个问题似乎很容易,但我只是没有找到合理的解决方案。 考虑具有以下特征的表: 每天,都会生成N个新行,用于表示将来的日期,并且“名称”来自有限列表。我想在有新数据时插入新行,但是如果已经有一个包含“名称”和“日期”的行,只需对其进行更新。 请注意,目前提出的检查条件的SPROC解决方案是不可行的,因为这是从另一种语言推送的数据。 问题答案: 那是为了什么 手册页面在这里。 诀