2010-07-27 18 views
12

मैवेन के लिए बहुत नया हूं और अब मैं अपना पहला प्रोजेक्ट पेड़ स्थापित करने की कोशिश कर रहा हूं। मैं दो विकल्पों के बीच अंतर को समझने के लिए संघर्ष कर रहा हूं:मेवेन: एकत्रीकरण बनाम निर्भरता

मेरे पास जार और युद्ध परियोजनाएं (दो प्रत्येक) हैं जिन्हें मैं बंडल करना चाहता हूं। परंपरागत रूप से मैं सिर्फ एक कान प्रोजेक्ट तैयार करता हूं जिसमें सभी चार निर्भरता के रूप में होते हैं।

अब मैं पोम्स के एकत्रीकरण के बारे में पढ़ता हूं और मुझे यकीन नहीं है कि अब और क्या करना है (http://maven.apache.org/pom.html#Aggregation देखें)। क्या मुझे चार परियोजनाओं के साथ एक समेकित पीओएम बनाना चाहिए?

मुझे लगता है कि मूल रूप से मेरा सवाल है: मॉड्यूल और निर्भरता के बीच बड़ा अंतर क्या है, यदि निर्भरता मेरी "खुद" परियोजनाओं में से एक है।

+0

एसओ में सम्मेलन टैग मैवेन -2 का उपयोग करना है, जब तक कि आप (मृत) मेवेन संस्करण 1 का जिक्र नहीं कर रहे हैं। यदि आप मुझसे पूछते हैं, तो यह एक उपद्रव है, लेकिन यह वही तरीका है। आपके लिए बदल गया –

उत्तर

11

एक मॉड्यूल चीजों को व्यवस्थित करने का एक तरीका है।

एक बहु-मॉड्यूल निर्माण में, आप एक चरण में कलाकृतियों का एक संपूर्ण पेड़ बना सकते हैं (Joel Test याद रखें)। हालांकि, इनमें से प्रत्येक एक व्यक्तिगत आर्टिफैक्ट होगा, जिसे व्यक्तिगत रूप से निर्भरता के रूप में संदर्भित किया जा सकता है।

यहां एक नमूना लेआउट है, जो ब्रांड्स में पैकेजिंग है।

root (pom) 
    - project1 (jar) 
    - project2 (war) -> references project1 as dependency 
    - project3 (jar) 
    - project4 (war) -> references project3 as dependency 
    - project5 (ear) -> references project2 and project4 as dependency 

संपूर्ण पेड़ बनाने के लिए रूट निर्देशिका में mvn install पर कॉल करें।

यह धारणा यह है कि प्रोजेक्ट 1 केवल प्रोजेक्ट 2 द्वारा उपयोग किया जाता है और प्रोजेक्ट 3 केवल प्रोजेक्ट 4 द्वारा उपयोग किया जाता है। अन्यथा यहां एक और जटिल परिदृश्य है।

root (pom) 
    - project1 (jar) 
    - project2 (jar) 
    - project3 (war) -> references project1 and project2 as dependency of scope provided 
    - project4 (war) -> references project1 and project2 as dependency of scope provided 
    - project5 (ear) -> references project1 through project4 as dependency 

तो, मॉड्यूल स्वतंत्र रूप से कई परियोजनाओं के निर्माण के काम को दूर लेते हैं, लेकिन आपको अभी भी अपनी निर्भरताओं को प्रबंधित करने की आवश्यकता है।

+2

आपके उत्तर के लिए धन्यवाद! बस इसे स्पष्ट करने के लिए: यदि, आपके उदाहरण में, मैं 'रूट' प्रोजेक्ट का उपयोग नहीं करता लेकिन केवल प्रोजेक्ट 5 (यानी 'mvn इंस्टॉल') का निर्माण करूंगा, तो यह _not_ स्वचालित रूप से प्रोजेक्ट 1-4 को पुन: संकलित करेगा, है ना? मुझे लगता है कि मैं गलत तरीके से ग्रहण करता हूं और मेरे भ्रम का कारण बनता है। – apropoz

+0

बिल्कुल। मेवेन कहीं भी काम नहीं करता है लेकिन वर्तमान निर्देशिका के नीचे। यह स्थानीय या रिमोट रिपोजिटरी से अन्य कलाकृतियों को हल करेगा, लेकिन जब तक वे वर्तमान पेड़ के अंदर न हों तब तक उन्हें फिर से नहीं बनाया जाएगा। –

संबंधित मुद्दे