当前位置: 首页 > 面试题库 >

如何解决Gradle中的循环依赖

宁兴修
2023-03-14
问题内容

我正在将Java项目从Ant迁移到Gradle。我认为最好的解决方案是使用Gradle的多项目支持,但是我找不到摆脱循环依赖的方法。

原始项目已设置为具有以下布局:

- project/
  - common/
  - product-a/
  - product-b/

之间的关系commonproduct-a并且,product-b是棘手的。将common取决于product-aproduct-b根据配置文件。同样,无论配置属性如何,都依赖product-a和。并且永远不会在同一时间建造。product-b``common``product-a``product-b

我认为一种快速的解决方案是在project/build.gradle

project(':product-a') {
    dependencies {
        compile project(':common')
    }
}

project(':product-b') {
    dependencies {
        compile project(':common')
    }
}

接下来,我想过要找到一种方法来使之更接近公正工作product-a。这导致我想到了这一点:

project(':common') {
    dependencies {
        compile project(':product-a')
    }
}

这将引发具有循环依赖性的异常

我已经考虑过重构product-a以及product-b通过设置多态性commonproduct-a/
product-b或使用多态性来期望的类的接口,但是在我继续研究其中的任何一种之前,是否有更好的方法通过Gradle来实现?我还没有摆脱这种技术债务的准备。


问题答案:

删除循环依赖项无法通过构建技巧解决。您将需要重构模块,以便不再有循环依赖。从您的模块名称开始,没有其他信息,我认为您希望提取依赖于“ product-
*”的“ common”部分,并将其放入新模块中。



 类似资料:
  • 本文向大家介绍Spring中循环依赖的解决方法详析,包括了Spring中循环依赖的解决方法详析的使用技巧和注意事项,需要的朋友参考一下 前言 说起Spring中循环依赖的解决办法,相信很多园友们都或多或少的知道一些,但当真的要详细说明的时候,可能又没法一下将它讲清楚。本文就试着尽自己所能,对此做出一个较详细的解读。另,需注意一点,下文中会出现类的实例化跟类的初始化两个短语,为怕园友迷惑,事先声明一

  • 本文向大家介绍详解Spring Bean的循环依赖解决方案,包括了详解Spring Bean的循环依赖解决方案的使用技巧和注意事项,需要的朋友参考一下 如果使用构造函数注入,则可能会创建一个无法解析的循环依赖场景。 什么是循环依赖 循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图: 注意,这里不是函数的循环调用,

  • 作为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的项目。

  • 本文向大家介绍详解Spring-bean的循环依赖以及解决方式,包括了详解Spring-bean的循环依赖以及解决方式的使用技巧和注意事项,需要的朋友参考一下 本文主要是分析Spring bean的循环依赖,以及Spring的解决方式。 通过这种解决方式,我们可以应用在我们实际开发项目中。 1. 什么是循环依赖? 循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环

  • 问题内容: 以下产生。我该如何解决? 问题答案: 您可以通过为尚未定义的类使用 字符串 名称来使用前向引用: __ 从Python 3.7开始 ,您还可以通过在模块顶部添加以下导入来推迟注释的 所有 运行时解析: 此时,注释将作为表达式的抽象语法树的字符串表示形式存储;您可以用来解决这些问题(并解决上面使用的前向引用)。 有关详细信息,请参见 PEP 563-批注的延迟评估 ;此行为将是Pytho