我们如何解决Maven循环依赖?
假设A是父项目,B和C是子项目。如果B依赖于C而C依赖于B,除了拥有不同的项目之外,还有什么方法可以解决循环依赖性。
答案 0 :(得分:31)
Maven不允许项目之间存在循环依赖关系,因为否则不清楚首先要构建哪个项目。所以你需要摆脱这个循环。一个解决方案就是你已经提到的,创建另一个项目。另一个是将一些类从B移动到C,反之亦然。或者有时将项目B和C合并到一个项目是正确的,如果不需要两个项目。
但是,如果不了解和分析为什么你的项目相互依赖,那么建议最好的解决方案是很困难的。
因此,我建议您使用JDepend或InteliJ分析工具等工具查找有问题的类,并根据它们为您的软件找到更好的设计。
大多数时候,我创建类似接口模块和实现模块的东西,它摆脱了大多数周期。
答案 1 :(得分:8)
答案 2 :(得分:0)
我将介绍如何解决循环依赖问题。
我有两个相互包含的模块。我删除了双方的依赖关系,并设置RabbitMQ消息传递系统并创建了直接交换。因此,当我需要来自module1的东西时,我会向RabbitMQ发送消息,并从module2获取响应和处理数据。我认为这是集成组件的更好方法,并且是松散集成。
答案 3 :(得分:0)
假设 A 项目依赖于 B,B 依赖于 A。