2014-12-29 5 views
6

मेरे पास मेरे प्रोजेक्ट में कई मॉड्यूल हैं और वे एक-दूसरे पर सीधे या पारदर्शी रूप से निर्भर हैं। जब मैं मेवेन «प्रोजेक्ट ए» का निर्माण करता हूं जहां कुछ «परियोजना डी» स्वचालित रूप से बन जाता है।माता-पिता मॉड्यूल के साथ बाल मॉड्यूल का निर्माण कैसे करें?

Project A > Project B > Project C > Project D 

where > means Project B depends on Project A 

«परियोजना डी» पोम snipeet है:

<project xmlns="..."> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.myProduct</groupId> 
    <artifactId>build-MyProjectD</artifactId> 
    <name>MyProjectD</name> 
    ........ 
</project> 

«प्रोजेक्ट ए» स्वचालित रूप से «परियोजना बी» निर्माण के निर्माण के रूप में, मेरी समझ के अनुसार निर्भरता के रूप में शामिल किया जाना चाहिए इस कहीं भी हो build-MyProjectD बनाने के लिए इन परियोजनाओं में से एक में Project A > Project B > Project C लेकिन मुझे इन परियोजनाओं के पोम्स के तहत स्ट्रिंग build-MyProjectD का कोई संदर्भ नहीं मिला।

कोई विचार बच्चे के मॉड्यूल (इस मामले में «परियोजना डी») बनाने के लिए कोई अन्य तरीका कैसे है, बिना बच्चे के artifactId अपस्ट्रीम परियोजना में उपस्थिति?

+0

के लिए सही निर्माण आदेश को समझने के लिए पर्याप्त स्मार्ट है, आप रिएक्टर का उपयोग कर सकते हैं जिसमें सभी परियोजनाओं को मॉड्यूल के रूप में शामिल किया जाएगा। यह [आलेख] (http://blog.sonatype.com/2009/10/maven-tips-and-tricks-advanced-reactor-options/) मदद कर सकता है। – Cuzz

उत्तर

13

आपको एक एग्रीगेटर प्रोजेक्ट बनाने की आवश्यकता है। the link for more information on the aggregation concept देखें।

मूल रूप से, आप एक "मूलभूत" युक्त एक मूल परियोजना बनाते हैं। माता-पिता का निर्माण करते समय, मॉड्यूल स्वचालित रूप से भी बन जाते हैं।

यदि आप मॉड्यूल के बीच निर्भरता घोषित करते हैं, तो मैवेन स्वचालित रूप से सही क्रम में विभिन्न मॉड्यूल का निर्माण करेगा ताकि अगर «परियोजना ए» «परियोजना बी» पर निर्भर करता है, «परियोजना बी» पहले बनाया गया है और फिर «परियोजना ए» बनाया गया है ताकि इसका आर्टिफैक्ट दूसरे आर्टिफैक्ट के निर्माण के लिए उपलब्ध हो।

this question from the Maven's FAQ भी देखें।

+0

यदि हम केवल दो मॉड्यूल और एक मॉड्यूल दूसरे पर निर्भर है तो हम निर्भरता के रूप में depebdent मॉड्यूल हो सकता है। सही? हाँ यदि हमारे पास एकाधिक मॉड्यूल हैं, तो यह एकत्रीकरण के लिए बेहतर होगा। यही है ना ? –

+0

@ स्कॉटमिल्स एकत्रीकरण आपको लॉजिकल प्रोजेक्ट्स के एक समूह को एक साथ समूहबद्ध करने की अनुमति देता है और उन्हें एक-एक करके बनाने के बजाय उन्हें एक बार में बना देता है। आप उन परियोजनाओं के बीच निर्भरता हो सकते हैं, या नहीं। –

+0

@ Guillaume Polet सहमत Aggragation एक तरीका है। क्या माता-पिता मॉड्यूल में निर्भरता के रूप में बाल परियोजना को जोड़ना एक और तरीका है, क्या हम माता-पिता मॉड्यूल का निर्माण करते समय स्वचालित रूप से सभी बाल परियोजना नहीं बनाएंगे? –

6

अभिभावक परियोजना के निर्माण के दौरान मैवेन सभी बाल मॉड्यूल का निर्माण करेगा। अपने मूल पोम में मॉड्यूल जोड़ें। मान लिया जाये कि A अपने माता पिता परियोजना

<modules> 
    <module>projectB</module> 
    <module>projectC</module> 
    <module>projectD</module> 
    </modules> 

और मॉड्यूल (बी, सी और डी), माता पिता के रूप में इस परियोजना के लिए एक जोड़ने में (, धन्यवाद @Guillaume Polet यह वैकल्पिक है)

<parent> 
    <groupId>foo.bar</groupId> 
    <artifactId>ProjectA</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</parent> 

तो अगर आप PROJECTA का निर्माण होता है, यह प्रोजेक्टबी, प्रोजेक्टसी और प्रोजेक्ट डी का निर्माण करेगा। इसके अलावा मेवेन बी, सी और डी

+2

दूसरा चरण आवश्यक नहीं है (इसे विरासत कहा जाता है)। पैरेंट पोम में केवल मॉड्यूल की घोषणा की आवश्यकता है। –

+0

@GuillaumePolet धन्यवाद, इसके बारे में पता नहीं था। मैंने जवाब अपडेट किया है। – xyz

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