问题: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