如何解决Gradle中的循环依赖
我正在将Java项目从Ant迁移到Gradle。我认为最好的解决方案是使用Gradle的多项目支持,但是我找不到摆脱循环依赖的方法。
原始项目已设置为具有以下布局:
- project/ - common/
- product-a/
- product-b/
之间的关系common
,product-a
并且,product-b
是棘手的。将common
取决于product-a
或product-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
通过设置多态性common
和product-a
/
product-b
或使用多态性来期望的类的接口,但是在我继续研究其中的任何一种之前,是否有更好的方法通过Gradle来实现?我还没有摆脱这种技术债务的准备。
回答:
删除循环依赖项无法通过构建技巧解决。您将需要重构模块,以便不再有循环依赖。从您的模块名称开始,没有其他信息,我认为您希望提取依赖于“ product-
*”的“ common”部分,并将其放入新模块中。
以上是 如何解决Gradle中的循环依赖 的全部内容, 来源链接: utcz.com/qa/430296.html