为什么Maven不能处理循环依赖,而Java编译器可以?

为什么Maven不能处理循环依赖,而Java编译器可以?,java,maven,compilation,Java,Maven,Compilation,假设我们的项目中有两个相互依赖的类。即,在类之间引入循环依赖关系。当然,这些类可以用Java编译。如果我们将这些类分成两个不同的工件,Maven就无法编译它们。它们在工件之间具有循环依赖性。为什么它可能在一个工件中,而不可能在两个工件中?事实上,这两个类是相同的,无论它们位于哪个文件夹中 但我想还有更深层次的东西我不明白 ?如果您有两个单独的工件-这意味着您有两个不同的库。 您应该构建一个库,然后构建另一个依赖库。 您不能在构建工件的依赖关系之前构建它。 这只是工件的规则。每个工件都是在单独的步

假设我们的项目中有两个相互依赖的类。即,在类之间引入循环依赖关系。当然,这些类可以用Java编译。如果我们将这些类分成两个不同的工件,Maven就无法编译它们。它们在工件之间具有循环依赖性。为什么它可能在一个工件中,而不可能在两个工件中?事实上,这两个类是相同的,无论它们位于哪个文件夹中

但我想还有更深层次的东西我不明白


如果您有两个单独的工件-这意味着您有两个不同的库。 您应该构建一个库,然后构建另一个依赖库。 您不能在构建工件的依赖关系之前构建它。 这只是工件的规则。每个工件都是在单独的步骤中构建的


当您在一个库中构建两个依赖类时——您没有任何这样的限制,您可以一步编译多个类

没有更深的了。只有在一次编译运行中完成时,Java才会解析循环依赖关系。Maven-fwiw也是,它只是javac的一个包装器。我认为Maven不想这样做。在循环中运行确实会让您走得更远:通常最好有一个线性部署路径。所以树是你的朋友。