如何在 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')
}
}
这将引发具有循环依赖项的异常。
我已经考虑过重构,并通过设置和/或使用多态性所期望的类的接口,但是在我继续使用其中任何一个之前,是否有更好的方法来使用Gradle实现这一目标?我还没有准备好摆脱这种技术债务。product-a
product-b
common
product-a
product-b