में परिपत्र निर्भरता को कैसे हल करें मैं एंट से ग्रैडल तक जावा प्रोजेक्ट माइग्रेट कर रहा हूं। मुझे लगता है कि सबसे अच्छा समाधान ग्रैडल के बहु-परियोजना समर्थन का उपयोग करना है, लेकिन मुझे परिपत्र निर्भरता से छुटकारा पाने का कोई तरीका नहीं मिल रहा है।ग्रैडल
- project/
- common/
- product-a/
- product-b/
संबंध common
, product-b
के बीच 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
पुनर्रचना पर विचार किया है, लेकिन इससे पहले कि मैं उन दोनों में से किसी के साथ आगे बढ़ने, वहाँ एक बेहतर तरीका है के साथ यह पूरा करने के लिए है Gradle? मैं अभी तक इस तकनीकी ऋण से छुटकारा पाने के लिए तैयार नहीं हूं।