Java 如何修复这个maven依赖关系

Java 如何修复这个maven依赖关系,java,git,maven,Java,Git,Maven,我们有一个Java8Maven项目,它在过去几个月变得相当大,构建变得复杂(有缺陷) 结构当前看起来像这样: git repo 1: module 1: sub-module A depends on: sub-module C sub-module B depends on: sub-module A git repo 2: module 2: sub-module C

我们有一个Java8Maven项目,它在过去几个月变得相当大,构建变得复杂(有缺陷)

结构当前看起来像这样:

git repo 1:
    module 1:
        sub-module A
            depends on: sub-module C
        sub-module B
            depends on: sub-module A

git repo 2:
    module 2:
        sub-module C
        sub-module D
            depends on: sub-module A
以下是从空的
.m2
maven目录开始时的当前构建过程:

  • 首先,清洁安装模块2(子模块D出现故障)
  • 然后再次
    清洁安装
    模块1,
    清洁安装
    模块2
我真的不知道这类问题的名称,也不知道解决这类问题的标准解决方案是什么。 目标是能够一步完成项目


我们是否应该合并两个git存储库并为模块1和模块2创建一个大型maven模块?

看起来您有循环/循环依赖关系,其中repo1依赖于repo2,repo2依赖于repo1,这显然是个坏主意

你的两个选择是:

  • 将您的“库”模块(模块A和C)放入各自独立的git存储库中,以消除循环依赖关系(也称为鸡或蛋问题)
  • 拥有一个单一(整体式)的多模块构建

  • 这两种方法都有赞成和反对的意见

    总是避免循环依赖。正如@AndrzejJozwik所说,这被称为循环依赖,应该总是避免。如何避免它,以及如何重新构造依赖关系太广泛,如果不深入了解项目和模块,就无法回答。但作为一般建议:将D所依赖的a中的元素提取到自己的项目中-将其命名为Z。您现在可以依赖a->Z和D->Z。循环已经结束。