首页 > 解决方案 > 多模块maven项目的循环依赖

问题描述

在过去的几周里,我一直在用 java 编写一个非常简单的区块链,作为 Intellij 的一个 maven 项目。当我开始这个项目时,我对驻留在单个模块中的所有内容都很好,尽管从技术上讲,需要构建两个工件才能使项目工作(一个可执行的 .jar 用于应用程序/控制逻辑,一个 .war 用于所有通过 tomcat 容器部署的 p2p 东西)。我使用单独的配置文件来构建 .jar 和 .war,并手动执行/部署它们。

然而,我已经厌倦了这一点,并相信将其拆分为一个多模块项目(一个 .war、.jar 和 .ear?也许..)是实现我能够构建和构建目标的唯一方法使用单个命令一次执行/部署所有内容。我已经开始这样做了,但是对两个子模块之间的循环依赖关系感到困惑。我有依赖于网络端的应用程序端的代码,以及依赖于应用程序端的网络端代码。如何通过创建另一个模块和另一个 pom.xml 来解决这个问题?任何建议将不胜感激!请耐心等待,因为我仍然是 java/maven 的新手,这是我第一次真正破解任何复杂程度的应用程序。

标签: javadependency-managementmulti-modulecyclic-dependency

解决方案


当你的子模块 c1 和 c2 相互依赖时,意味着一个类或包,那么公共包应该在一个单独的模块 c3 中。在 c1 和 c2 项目中添加 c3 作为依赖项。

您不能将 c1 添加为 c2 中的依赖项,将 c2 添加为 c1 中的依赖项。因为当 maven 试图分析你的代码时,由于这种循环依赖,它找不到首先构建哪个模块。


推荐阅读