मेरे पास एक मल्टी-मॉड्यूल मावेन प्रोजेक्ट है। इस उदाहरण के लिए, दो मॉड्यूलों पर विचार करें:
dataconsumer
मॉड्यूल consumerमें dataएक निर्भरता के रूप में मॉड्यूल है ।
मॉड्यूल dataकोर कक्षाओं का एक गुच्छा घोषित करता है। इसके तहत परीक्षण हैं src/testजो उनका उपयोग करते हैं। इन परीक्षणों के लिए कुछ लंबी-घुमावदार ऑब्जेक्ट निर्माण की आवश्यकता होती है, इसलिए मेरे पास इन वस्तुओं को बनाने के लिए इसमें कुछ उपयोगिता विधियों के साथ एक वर्ग है। यह उपयोगिता वर्ग ( SampleDataHelper) src/testपदानुक्रम में है।
मेरे पास consumerमॉड्यूल में कुछ परीक्षण भी हैं जिन्हें इन लंबी-घुमावदार वस्तुओं में से कुछ बनाने की आवश्यकता है। मैं अपने SampleDataHelperवर्ग का उपयोग (परिभाषित data src/test) उन परीक्षणों में करना चाहता हूं जो मेरे consumer src/testपेड़ में रहते हैं । दुर्भाग्य से, भले ही dataएक निर्भरता है consumer, consumerउन वर्गों को नहीं देख सकता है जो इसके अंतर्गत मौजूद हैं data src/test।
इससे निपटने के लिए, मुझे लगा कि मैं एक और मॉड्यूल ( data-test) बना सकता हूं , और SampleDataHelperइसके तहत आगे बढ़ सकता हूं src/main। तो मैं data-testएक परीक्षण गुंजाइश निर्भरता के रूप में शामिल करेंगे data। दुर्भाग्य से, यह एक परिपत्र निर्भरता का परिचय देता है: dataउपयोग करता है data-test, लेकिन इसकी data-testआवश्यकता भी होती है data।
एकमात्र समाधान जो मैं लेकर आया हूं, वह एक पैकेज SampleDataHelperके data src/mainतहत होना है testऔर आशा है कि कोई भी वास्तविक एप्लिकेशन कोड कभी भी इसे कॉल नहीं करेगा।
मैं इसे नीचे SampleDataHelperरखे बिना मॉड्यूल के बीच अपनी कक्षा कैसे साझा कर सकता हूं src/main?
data करने के लिए consumer।
mvn package, लेकिन यह एक ही चरण निर्माण में ठीक काम करना चाहिए जब आप का उपयोग करें mvn installया mvn deploy। बस एक त्वरित नोट। हमारी एक बड़ी परियोजना में हमारे पास जूनियर के ऊपर एक रैपर है TestBaseऔर यह स्थित है src/mainजिसमें मैं या तो एक अच्छा विचार नहीं मानता हूं।