2014-12-22 17 views
10

मान लें कि मेरे पास maven प्रोजेक्ट है जिसमें कुछ मेवेन मॉड्यूल हैं।मल्टी-मॉड्यूल इंटेलिजे प्रोजेक्ट मेवेन के साथ - एक मॉड्यूल से दूसरे मॉड्यूल पर निर्भरता कैसे जोड़ें?

मेरा मुख्य मॉड्यूल अन्य मॉड्यूल पर निर्भर करता है, इसलिए जब मैं मुख्य मॉड्यूल संकलित करता हूं तो उन्हें एक साथ संकलित किया जाना चाहिए।

सवाल यह है कि, इन मॉड्यूल को मुख्य मॉड्यूल पर निर्भरता के रूप में कैसे जोड़ना है?

मैं जानता हूँ कि अगर मैं यह है कि मैं Maven के साथ उपयोग करना चाहते हैं एक कस्टम lib है, मैं इस परियोजना के जार संकलन, स्थानीय भंडार पर इसे स्थापित करने के लिए उस पर एक mvn install:install-file और फिर जोड़ने के लिए मान लीजिए कि एक utilities project करते हैं, यह pom.xml पर है।

क्या मुझे अपने सभी मॉड्यूल के साथ ऐसा करना है और निर्भरता को मेरे मुख्य मॉड्यूल पर pom.xml पर जोड़ना है? क्योंकि अगर ऐसा किया जाना चाहिए, तो अन्य मॉड्यूल पर कोड बदलते समय बहुत सारे काम होंगे।

स्थानीय भंडार में मॉड्यूल संकलित/स्थापित करने की समस्या से बचने के लिए सबसे अच्छा अभ्यास क्या है?

+0

बस एक निर्भरता के रूप में घोषित करना चाहिए काम करना चाहिए। वर्कस्पेस कलाकृतियों को हल करते समय कम से कम यह ग्रहण के साथ काम करता है। –

+0

क्या आप अन्य मॉड्यूल को गैर-मैवेन निर्भरताओं के रूप में जोड़ना चाहते हैं? ऐसा करने के लिए, उदाहरण के लिए संस्करण नियंत्रण से जांचने के बाद, परियोजना के अन्य उपयोगकर्ताओं को मैन्युअल रूप से मॉड्यूल के बीच निर्भरताओं को हल करना होगा। यदि परियोजना में बहुत सारे मॉड्यूल हैं, और सभी मॉड्यूल के बीच आंतरिक निर्भरताएं इससे जीवन कठिन हो जाएंगी। निर्भरताओं को pom.xml के माध्यम से अन्य मॉड्यूल में सेट करने का कोई तरीका नहीं है, इसलिए इसे संस्करण नियंत्रण के माध्यम से साझा किया जा सकता है? –

+0

नहीं, एक साधारण मैवेन निर्भरता के रूप में। देखें: http://books.sonatype.com/mvnex-book/reference/multimodule-sect-simple-web.html –

उत्तर

3

सवाल यह है कि, इन मॉड्यूल को मुख्य मॉड्यूल पर निर्भरता के रूप में कैसे जोड़ना है?

वैसे ही आप अपने मैवेन प्रोजेक्ट में कोई अन्य निर्भरता जोड़ते हैं। समूह आईडी, आर्टिफैक्ट आईडी और संस्करण <dependency> तत्व

क्या मुझे अपने सभी मॉड्यूल के साथ ऐसा करना है और मेरे मुख्य मॉड्यूल पर pom.xml पर निर्भरता जोड़ना है?

आपका मुख्य मॉड्यूल फिर कुछ मॉड्यूल एक पर निर्भर करता हैकेवल मुख्य मॉड्यूल के पोम अपने मॉड्यूल के सभी निर्भरता के लिए मॉड्यूल ए की ओर निर्भरता घोषणा आप ऐसा शामिल करना चाहिए है।

मुझे नहीं पता कि "अन्य मॉड्यूल पर कोड बदलने पर बहुत सारे काम" से आपका क्या मतलब है। मेवेन के पास कोड परिवर्तनों से कोई लेना देना नहीं है, यह सिर्फ उन परियोजनाओं को बनाता है जो वे दिए गए पल में दिखते हैं ...

स्थानीय भंडार में मॉड्यूल को संकलित/स्थापित करने की समस्या से बचने के लिए सबसे अच्छा अभ्यास क्या है?

कोई भी प्रोजेक्ट जिसे आपने mvn install पर बुलाया है, इसे बनाया गया है और इसकी जार स्थानीय भंडार में कॉपी की गई है। रेपो में जार पाने के लिए आपको बस इतना करना है। यह स्थानीय रेपो में उपलब्ध सभी आश्रित जार भी रखेगा।

बहु मॉड्यूल परियोजनाओं के लिए सर्वोत्तम प्रथाओं के लिए के रूप में:

अगर आपके माता-पिता परियोजना (एक के अंदर मॉड्यूल है कि) <modules> अनुभाग है कि आपके आवेदन के मॉड्यूल को सूचीबद्ध करता है, और मॉड्यूल अपने माता पिता परियोजना के उपनिर्देशिका में हैं, तो आप पेरेंट प्रोजेक्ट को केवल mvn install (या जो भी आप करना चाहते हैं) पेरेंट प्रोजेक्ट और इससे सभी मॉड्यूल को उनके बीच घोषित निर्भरताओं द्वारा परिभाषित क्रम में बनाया जाएगा। इसका मतलब है कि यदि आपके मुख्य मॉड्यूल में मॉड्यूल ए पर निर्भरता है, तो मॉड्यूल ए मुख्य मॉड्यूल से पहले बनाया जाएगा। इस तरह आप एक कमांड के साथ अपने सभी मॉड्यूल बना सकते हैं और स्थापित कर सकते हैं। दूसरी ओर यह दृष्टिकोण मॉड्यूल के बीच अधिक तंग युग्मन बनाता है जो कुछ मामलों में वांछित नहीं है, इसलिए यह आपके उपयोग के मामले पर निर्भर करता है कि यह एक अच्छा दृष्टिकोण है या नहीं।

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