我正在將Java項目從Ant遷移到Gradle。我認爲最好的解決方案是使用Gradle的多項目支持,但是我找不到一種擺脫循環依賴的方法。如何解決Gradle中的循環依賴關係
原來的項目是設置有這樣的佈局:
- project/
- common/
- product-a/
- product-b/
的關係product-b
之間common
,product-a
,並且是棘手的。 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')
}
}
這將拋出一個異常,對於具有循環依賴。
我已經考慮通過建立由common
和product-a
/product-b
,或者使用多態預期的類接口重構product-a
和product-b
,但在此之前我和這兩個的往前走,有沒有更好的辦法有做到這一點搖籃?我還沒有準備好擺脫這個技術債務。