我正在将Java项目从Ant迁移到Gradle.我认为最好的解决方案是使用Gradle的多项目支持,但我找不到摆脱循环依赖的方法.
原始项目设置为具有以下布局:
- project/
- common/
- product-a/
- product-b/
common,product-a和product-b之间的关系很棘手.常见的取决于产品-a或产品-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')
}
}
接下来,我想到了一种方法,让它更接近于只为产品而工作.这导致我这样:
project(':common') {
dependencies {
compile project(':product-a')
}
}
这将引发具有循环依赖性的异常.
我已经考虑通过设置common和product-a / product-b所期望的类的接口或者使用多态来重构product-a和product-b,但在我推进其中任何一个之前,是否有更好的方法用Gradle完成这个任务?我还没准备好摆脱这种技术债务.