का एक विकल्प है:।
- परियोजना रखना एक मॉड्यूल में; और वैकल्पिक निर्भरताओं का उपयोग करें।
- परियोजना को कई मॉड्यूल में विभाजित करें; जहां प्रत्येक मॉड्यूल में किसी भी पुस्तकालय पर एक (गैर-वैकल्पिक) निर्भरता होती है;
मुझे लगता है कि ज्यादातर मामलों में पहली बार अधिक समझदारी होती है: उपयोगकर्ताओं को कम कलाकृतियों के आसपास अपना रास्ता समझने की आवश्यकता होती है। आमतौर पर, उन्हें अपने पोम में कम नई निर्भरताओं को जोड़ना होगा। जब तक कि तृतीय पक्ष परियोजनाओं का समर्थन करने के लिए कोड बड़ा न हो, यह मैवेन डाउनलोड समय को भी बेहतर बनाने में मदद करेगा (कम राउंड-ट्रिप)। बाद के दृष्टिकोण के साथ, आप अपने आप को अजीब स्थितियों में पा सकते हैं जहां उपयोगकर्ता ने अपने संस्करणों के सेट को परिभाषित किया है, लेकिन केवल कुछ तृतीय-पक्ष निर्भरताओं के लिए।
मैं पोम में वैकल्पिक निर्भरताओं को देखना पसंद करता हूं (मैं कभी-कभी यह देखने के लिए देखता हूं कि यह किस संस्करण के खिलाफ बनाया गया है)। यह सच है कि कुछ लोग शायद नहीं देख सकते हैं। मुझे लगता है कि वेबसाइट पर कॉपी-एंड-पेस्टेबल पोम स्निपेट इसके लिए सबसे अच्छा समाधान है। उदाहरण के लिए, यदि आपके पास स्प्रिंग एकीकरण के बारे में कोई पृष्ठ है, तो आप उस पृष्ठ पर प्रासंगिक पोम स्निपेट डाल सकते हैं।
मैं सुझाव दूंगा कि गैर-मुक्त निर्भरता (या आसानी से हल करने योग्य कुछ भी नहीं) को अलग मैवेन मॉड्यूल में रखा जाए, ताकि योगदानकर्ता हमेशा प्राथमिक आर्टिफैक्ट बनाने में सक्षम हों। (मुझे क्वार्ट्ज के साथ यह समस्या थी, जिसे आईआईआरसी के पास ओरेकल जेडीबीसी जार पर वैकल्पिक निर्भरता है)।
संपादित करें: यदि आप NoClassDefFoundErrors को देखने वाले उपयोगकर्ताओं के बारे में चिंतित हैं, तो यह जांचने के लिए कक्षा को हल करने के लिए कोई नुकसान नहीं होगा। उदाहरण के लिए, आप अपवाद कर सकते हैं, और उपयोगकर्ता को दस्तावेज़ीकरण के लिए इंगित करने वाला एक और सार्थक त्रुटि संदेश फेंक सकते हैं। एसएलएफ 4 जे इसका एक अच्छा उदाहरण है।
स्रोत
2012-04-02 09:45:55
** अद्यतन: ** बस स्पष्ट करने के लिए, बातें मैं के बारे में अनिश्चित हैं हूँ - पोम डिजाइन - प्रतिबिंब दोनों बनाम कई मॉड्यूल बनाम बनाम ... - autodiscovery या अतिरिक्त मॉड्यूल की नहीं है अगर वे मौजूद हैं/अगर हां, कैसे - ... –
अपडेट: मैं आखिरकार इस बारे में एक व्यापक ब्लॉग पोस्ट लिखने के लिए आया हूं: http://www.axelfontaine.com/2012/08/optional-dependency-strategies-for-java। एचटीएमएल –