当前位置: 首页 > 知识库问答 >
问题:

Gradle/Maven的循环依赖行为

慕容成文
2023-03-14

作为foo-3.0.0.jar的“旧版本圈”使用bar-2.0.0.jar,bar-2.0.0.jar使用foo-1.0.0.jar。

这不是关于构建foo.jar或bar.jar,而是关于构建依赖于foo.jar或bar.jar的项目。

共有1个答案

公孙芷阳
2023-03-14

真正的循环依赖将导致错误:Maven将直接导致构建失败。当您临时依赖于与当前项目具有相同Maven坐标的工件时,就会发生循环依赖:groupidartifactidversionpackagingclassifier。通常,我们在处理JAR时没有分类器,因此具有相同的groupidartifactidversion通常定义循环依赖项。

旧版本的圆本身并不是圆,因为Maven的坐标并不相同。在这种情况下,Maven将通过应用依赖关系中介来保留较新的版本:

这意味着它将使用依赖关系树中与项目最接近的依赖关系的版本

 类似资料:
  • 问题内容: 我有一个模块化的maven项目,其中两个模块“ BIZ”和“ EJB”包含如下内容: 如您所见, “ EJB”依赖于“ BIZ”, 因为它使用 MyClassX (实际上,它使用了BIZ的几种类别)。这就是 ImplFactory 使用反射实例化 InterfaceImpl 的原因。问题是 cl.newInstance() 将抛出 ClassCastException, 因为这两个模块

  • 我们有一个模块化项目,包含大约10个工件: 此外,一些工件之间存在依赖关系: 我们当前的设置如下所示: parent是包含父POM的工件 这个父POM定义了所有必要的依赖项(比如Spring、JPA等等)进来 我们所有的工件也都在中定义 我们的工件将父工件称为明显的父工件 只有父POM定义版本。其他所有的POM都没有 我们使用三个数字的版本控制方案: 例如: 问题是: 一旦我们更改了工件的版本(例

  • 问题内容: 我正在将Java项目从Ant迁移到Gradle。我认为最好的解决方案是使用Gradle的多项目支持,但是我找不到摆脱循环依赖的方法。 原始项目已设置为具有以下布局: 之间的关系,并且,是棘手的。将取决于或根据配置文件。同样,无论配置属性如何,都依赖和。并且永远不会在同一时间建造。 我认为一种快速的解决方案是在: 接下来,我想过要找到一种方法来使之更接近公正工作。这导致我想到了这一点:

  • 问题内容: 我已经搜索了很多,但是我发现的主要是python中的递归编程示例。因此,问题来了: 我该如何实现? 问题答案: 一切在Python中都是动态的-甚至是类声明。在初始声明之后,没有什么可以阻止您修改类的内容的: 注意:如果您不太熟悉Python,则该关键字仅允许您说“这里什么都没有”-除非A类的空值与本例中的一样空,否则它并不重要!

  • 问题内容: 我有两个文件和,分别定义了两个类和。 直到今天,用于引用该对象的定义,因此我已经做了 在文件中。 但是,到目前为止,我已经为引用该对象的对象创建了一个新方法。 尝试导入时遇到了问题:我尝试了一下,当程序运行并调用了using的方法时,出现了一个未定义的异常。 我该怎么办? 问题答案: 导入Python模块 是一篇很棒的文章,介绍了Python中的循环导入。 解决此问题的最简单方法是将路

  • 问题内容: 我有以下课程。 和 可以清楚地看到,这些类之间存在循环依赖关系。如果尝试运行A类,最终会得到。 如果创建了一个依赖图,其中节点是类,则可以轻松地识别这种依赖关系(至少对于节点很少的图)。那么,为什么JVM至少在运行时无法识别此身份?JVM至少可以在开始执行之前发出警告,而不是抛出。 [更新] 某些语言不能具有循环依赖关系,因为这样就无法构建源代码。和可接受的答案。如果循环依赖性是C#的