如何解决Gradle中的循环依赖

我正在将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”部分,并将其放入新模块中。

以上是 如何解决Gradle中的循环依赖 的全部内容, 来源链接: utcz.com/qa/430296.html

回到顶部