java - 多模块maven项目的循环依赖
问题描述
在过去的几周里,我一直在用 java 编写一个非常简单的区块链,作为 Intellij 的一个 maven 项目。当我开始这个项目时,我对驻留在单个模块中的所有内容都很好,尽管从技术上讲,需要构建两个工件才能使项目工作(一个可执行的 .jar 用于应用程序/控制逻辑,一个 .war 用于所有通过 tomcat 容器部署的 p2p 东西)。我使用单独的配置文件来构建 .jar 和 .war,并手动执行/部署它们。
然而,我已经厌倦了这一点,并相信将其拆分为一个多模块项目(一个 .war、.jar 和 .ear?也许..)是实现我能够构建和构建目标的唯一方法使用单个命令一次执行/部署所有内容。我已经开始这样做了,但是对两个子模块之间的循环依赖关系感到困惑。我有依赖于网络端的应用程序端的代码,以及依赖于应用程序端的网络端代码。如何通过创建另一个模块和另一个 pom.xml 来解决这个问题?任何建议将不胜感激!请耐心等待,因为我仍然是 java/maven 的新手,这是我第一次真正破解任何复杂程度的应用程序。
解决方案
当你的子模块 c1 和 c2 相互依赖时,意味着一个类或包,那么公共包应该在一个单独的模块 c3 中。在 c1 和 c2 项目中添加 c3 作为依赖项。
您不能将 c1 添加为 c2 中的依赖项,将 c2 添加为 c1 中的依赖项。因为当 maven 试图分析你的代码时,由于这种循环依赖,它找不到首先构建哪个模块。
推荐阅读
- intellij-idea - IntelliJ - 如何定义每个开发人员都有不同的 SDK 的项目 SDK?
- python - 计算三元图中数据点的面积和重叠面积?
- c++ - c ++互斥锁可以跨方法/变量吗?如果是这样,为什么它在这里不起作用?
- fosuserbundle - LogoutListener 给了我一个“InvalidArgumentException”
- python - Pandas:使用 [columnname][rownumber] 选择数组的值仅适用于多索引
- active-directory - Microsoft Active Directory 是否可以选择成为身份提供者?
- mongodb - 正确的 Mongoose 子文档关系
- javascript - 如何让我在 mysqli 上关注的人?
- ionic3 - 从 html ionic 读取 id 值
- typescript - React 渲染道具模式类错误