मैंने अपने विभिन्न प्रोजेक्ट्स से सभी रिपॉजिटरी कॉन्फ़िगरेशन को एक पैरेंट पोम में दोबारा दोहराया है जिसे मैंने रेपो और वितरण प्रबंधन जैसी चीजों के लिए कॉन्फ़िगरेशन के एक बिंदु के विशिष्ट उद्देश्य के लिए बनाया है। यह सबसे अच्छा अभ्यास माना जाता है क्योंकि मैं इसे समझता हूं। नेक्सस सर्वर पर मेरे मूल पोम को तैनात करने में, और फिर मेरे बच्चे की परियोजनाओं को चलाने की कोशिश की। वे मेरे माता-पिता को नहीं ढूंढ सकते हैं। । । इस तरह का मुझे समझ में आता है, माता-पिता के पोम के बिना वे नेक्सस रेपो के बारे में नहीं जानते हैं। । । एक चिकन और अंडे की तरह लगता है? क्या मुझसे साफ़ - साफ़ कुछ चीज़ चूक रही है?यदि मेरे माता-पिता पैरेंट पोम में कॉन्फ़िगरेशन कॉन्फ़िगर किए गए हैं तो मेरे पोम को मेरे माता-पिता को कैसे ढूंढें?
उत्तर
यह सच है कि आपकी परियोजना को यह जानने की जरूरत है कि रिपॉजिटरीज़ को अपनी निर्भरताओं को डाउनलोड करने के लिए कहां मिलना है। लेकिन बाहरी भंडारों में जाने से पहले, मैवेन आपके स्थानीय भंडार की जांच करेगा कि यह देखने के लिए कि क्या कलाकृतियों की आवश्यकता है। क्या आपके स्थानीय भंडार में पैरेंट पोम होता है? यदि नहीं, तो आप इसे
mvn install
पैरेंट पोम पर चलाकर जोड़ सकते हैं। आपके स्थानीय को छोड़कर, माता-पिता को सीधे नेक्सस पर तैनात करके समस्या हो सकती है। आप
mvn deploy
इस का उपयोग करते हुए पहले विरूपण साक्ष्य स्थानीय स्तर पर स्थापित हो जाएगा वितरित करते हुए भविष्य में इससे बचने कर सकते हैं, और फिर बाहरी भंडार (नेक्सस, आपके मामले में) करने के लिए इसे तैनात। यहां अधिक जानकारी: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
यदि आप ऐसी परिस्थिति में हैं जहां आपके माता-पिता को बनाया गया है और दूसरों द्वारा तैनात किया गया है, तो इससे मदद नहीं मिलेगी। आप या तो अपने प्रोजेक्ट के पोम में या अपने स्थानीय सेटिंग्स.एक्सएमएल में रिपॉजिटरीज निर्दिष्ट कर सकते हैं। एक आम तरीका यह है कि सभी डेवलपर्स को उनकी स्थानीय सेटिंग्स.एक्सएमएल में एक रिपॉजिटरी परिभाषा शामिल करने की उम्मीद है जो आपके नेक्सस रिपोजिटरी को इंगित करता है, इसे अन्य सभी भंडारों के लिए दर्पण के रूप में उपयोग करता है। फिर आप नेक्सस में आवश्यक प्रत्येक बाहरी भंडार को कॉन्फ़िगर कर सकते हैं, और इसे आपके लिए आवश्यक किसी भी निर्भरता को पुनर्प्राप्त करने दें। मैं नेक्सस से परिचित नहीं हूं, लेकिन मिररिंग पर अधिक जानकारी यहां मिल सकती है: http://maven.apache.org/guides/mini/guide-mirror-settings.html
आपको प्रत्येक बच्चे (मेवेन मॉड्यूल) के लिए रिपोजिटरी परिभाषाओं को बनाए रखना चाहिए, यह एक निर्माण प्रक्रिया में मुख्य सर्वोत्तम अभ्यास है: "मेक पोर्टेबल निर्माण "।
कोई भी डेवलपर/सिस्टम माता-पिता या अन्य मॉड्यूल के लिए स्रोत निर्भरताओं के बिना किसी भी मॉड्यूल को बनाने में सक्षम होना चाहिए, केवल भंडार संदर्भ के साथ।
धन्यवाद, यह मदद करता है। मैं उम्मीद कर रहा था कि मुझे एक समाधान मिलेगा जिसका अर्थ है कि एक डेवलपर बस परियोजना की जांच कर सकता है, और निर्माण और सबकुछ बस काम करेगा। यह "डिजाइन अनिवार्य" सेटिंग्स.एक्सएमएल चीज को थोड़ा परेशान करता है, लेकिन बुरा नहीं;) समस्या यह है कि एसएमएम संरचना में मूल पोम, कई परियोजनाओं के ऊपर रहता है। एक विशिष्ट प्रोजेक्ट पर एक डेवलपर, पैरेंट पोम की ऊंचाई पर चेकआउट नहीं करना चाहता। । । शायद कुछ एसएमएम चालबाजी क्रम में है। – chad
निश्चित रूप से, मैं स्वयं उस समस्या में आया हूं। एसवीएन पेड़ के शीर्ष के बजाय माता-पिता को कहीं और रखना संभव है, और शीर्ष पर मौजूद किसी अन्य पोम में उप-मॉड्यूल को परिभाषित करना संभव है। माता-पिता के संबंध में माता-पिता के दो पहलू हैं; माता-पिता को परिभाषित करने से कॉन्फ़िगरेशन की विरासत मिलती है, और मॉड्यूल को परिभाषित करने से बिल्ड को समेकित किया जा सकता है। दोनों को एक साथ नहीं जाना है - आप पेरेंट प्रोजेक्ट को कहीं और रख सकते हैं, और अपने एसवीएन पेड़ के शीर्ष पर एक नया पोम का उपयोग कर सकते हैं, ताकि माता-पिता को चेक आउट किया जा सके और स्वयं बनाया जा सके। – Conan