多个maven项目出现循环依赖的解决办法

问题:The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='com.tb:maven-learn3:1.0-SNAPSHOT'}' and 'Vertex{label='com.tb:maven-learn2:1.0-SNAPSHOT'}' introduces to cycle in the graph com.tb:maven-learn2:1.0-SNAPSHOT --> com.tb:maven-learn3:1.0-SNAPSHOT --> com.tb:maven-learn2:1.0-SNAPSHOT @

问题分析:由于我的maven-learn2项目依赖maven-learn3项目,而maven-learn3项目依赖于maven-learn2项目,导致各个项目不能进行mvn clean compile package install等一系列操作。

解决方法:

1.将maven-learn2项目中的依赖于maven-learn3的denpendengcy注释掉。同理将maven-learn2的相关依赖注释。

<dependency>

        <groupId>com.tb</groupId>

         <artifactId>maven-learn3</artifactId>

         <version>1.0-SNAPSHOT</version>

</dependency>

2.在maven-learn2中的pom.xml添加一下配置,maven-learn3也同样操作。

<properties>

        <module.learn2.src>../mavenlearn2/src/main/java</module.learn2.src> 

        <module.learn3.src>../mavenlearn3/src/main/java</module.learn3.src>

</properties>

定义两个变量module.learn2.src和module.learn3.src,然后需要引入插件build-helper-maven-plugin。依旧在该pom.xml中配置

<build>

<plugins> <!-- 解决模块相互依赖,综合所有相互依赖代码统一编译 -->

            <plugin>

                 <groupId>org.codehaus.mojo</groupId>

                   <artifactId>build-helper-maven-plugin</artifactId>

                  <executions>

                                  <execution>

                                             <id>add-source</id>

                                              <phase>generate-sources</phase>

                                             <goals>

                                                        <goal>add-source</goal>

                                             </goals>

                                            <configuration>

                                                       <sources>

                                                                   <source>${module.learn2.src}</source>

                                                                   <source>${module.learn3.src}</source>

                                                      </sources>

                                             </configuration>

                                      </execution>

                          </executions>

                 </plugin>

</plugins>

</build>

该文本加粗的地方用到刚刚定义的变量。将你各个项目需要依赖的文件资源目录添加到此处。

3.回到maven-learn2中执行mvn install命令,由此maven-learn2项目jar包就打包安装到本地仓库中去了。maven-learn3同理。


如图

操作完成后,相关依赖冲突问题也就不存在了。可以编译、启动项目等进行一系列其他操作。

解决原理参考:https://www.cnblogs.com/jixp/articles/6802384.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容