मेरे पास एक मल्टी-मॉड्यूल मावेन प्रोजेक्ट है। इस उदाहरण के लिए, दो मॉड्यूलों पर विचार करें:
data
consumer
मॉड्यूल 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
जिसमें मैं या तो एक अच्छा विचार नहीं मानता हूं।