我们如何解决Maven的循环依赖问题?
假设A是父项目,B和C是子项目。如果B依赖于C,而C又依赖于B,除了使用不同的项目外,是否有其他方法可以解决这种循环依赖关系呢?
我们如何解决Maven的循环依赖问题?
假设A是父项目,B和C是子项目。如果B依赖于C,而C又依赖于B,除了使用不同的项目外,是否有其他方法可以解决这种循环依赖关系呢?
Maven不允许项目之间存在循环依赖,因为这样就不清楚应该先构建哪个项目。所以你需要消除这个循环。一种解决方案是你已经提到过的创建另一个项目。另一种方法是当移动一些类从B到C或反过来时有帮助时,就这样做。或者如果没有必要拥有两个项目,有时正确的做法是将项目B和C合并为一个项目。
但是,如果不知道和分析为什么你的项目彼此依赖,很难建议最好的解决方案。
因此,我建议您可以使用像JDepend或InteliJ等工具来查找问题类,然后基于它们找到更好的软件设计。
大多数情况下,我创建类似于接口模块和实现模块的东西,这样可以消除大多数循环。 在本主题中查看Dormouse的答案,并搜索“依赖反转原则”以获取更多关于这个主题的来源。
假设Project A依赖于Project B,而Project B又依赖于Project A。
我将介绍我如何解决循环依赖问题的方法。
我有两个相互包含的模块。我在双方都移除了依赖,并设置了RabbitMQ消息系统并创建了直接交换。因此,当我需要从module1获取某些内容时,我会向RabbitMQ发送消息并获取响应,然后从module2处理数据。我认为这是更好的组件集成方式,它是松散耦合的。