我正在将Java项目从Ant迁移到Gradle.我认为最好的解决方案是使用Gradle的多项目支持,但我找不到摆脱循环依赖的方法.
原始项目设置为具有以下布局:
- project/
- common/
- product-a/
- product-b/
Run Code Online (Sandbox Code Playgroud)
之间的关系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')
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,我想到了一个方法,让它更接近公正的工作product-a.这导致我这样:
project(':common') {
dependencies {
compile project(':product-a')
}
}
Run Code Online (Sandbox Code Playgroud)
这将引发具有循环依赖性的异常.
我已经考虑过重构,product-a并且product-b通过设置common和product-a/ product-b或使用多态来设置类的接口,但在我继续使用其中任何一个之前,是否有更好的方法来实现Gradle?我还没准备好摆脱这种技术债务.
使用构建技巧无法解决删除循环依赖关系的问题.您将不得不重构您的模块,因此不再存在循环依赖.从你的模块名称,没有其他信息,我认为你会想要提取依赖于"product-*"的"common"部分并将其放入一个新模块中.
| 归档时间: |
|
| 查看次数: |
9661 次 |
| 最近记录: |