2010-03-08 16 views
8

मेरे पास एक बहु मॉड्यूल मैवेन प्रोजेक्ट है, जो सफलतापूर्वक बनाता है, मैं बनाना चाहता हूं जो मेरे पास मॉड्यूल के केवल है। मैं profiles के साथ ऐसा कैसे करूं? मैं इसे कंसोल से दो तरीकों से कर सकता हूं, एक तरीका बाल मॉड्यूल और mvn package पर जाता है या मैं सिर्फ एक मॉड्यूल बनाने के लिए रिएक्टर का उपयोग कर सकता हूं।एकल मॉड्यूल के लिए मेवेन प्रोफाइल

क्या मैं प्रोफाइल के साथ एक ही काम कर सकता हूं? पीओएम संशोधित करके? आप

संपादित

हैं पोम से असंभव है, मैं इसे settings.xml से कर सकते हैं धन्यवाद?

उत्तर

13

प्रोफाइल के साथ इसे कार्यान्वित करने के लिए, आप दो प्रोफाइल, एक <activeByDefault> का उपयोग सभी मॉड्यूल के साथ और केवल वांछित मॉड्यूल के साथ कर सकते हैं। कुछ इस तरह:

<profiles> 
    <profile> 
    <id>all</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <modules> 
     <module>module-1</module> 
     ... 
     <module>module-n</module> 
    </modules> 
    </profile> 
    <profile> 
    <id>module-2</id> 
    <modules> 
     <module>module-2</module> 
    </modules> 
    </profile> 
<profiles> 

और फिर इस तरह इसे कहते:

mvn -Pmodule-2 package 

दो बातें यहां गौर करने योग्य

  1. आप एक "डिफ़ॉल्ट में पोम से <modules> बढ़ने की जरूरत है "प्रोफाइल (क्योंकि प्रोफ़ाइल से <modules> केवल योजक हैं, वे पीओएम में घोषित मॉड्यूल को छिपाते नहीं हैं)।
  2. इसे <activeByDefault> के रूप में चिह्नित करके, "डिफ़ॉल्ट" प्रोफ़ाइल चुना जाएगा यदि कुछ और सक्रिय नहीं है लेकिन कुछ और है तो निष्क्रिय हो गया है।

एक भी मॉड्यूल के नाम parametrize और संपत्ति के रूप में इसे पारित कर सकते हैं:

<profiles> 
    ... 
    <profile> 
    <id>module-x</id> 
    <activation> 
     <property> 
     <name>module-name</name> 
     </property> 
    </activation> 
    <modules> 
     <module>${module-name}</module> 
    </modules> 
    </profile> 
<profiles> 

और इस तरह Maven आह्वान:

mvn -Dmodule-name=module-2 package 

लेकिन यह एक गरीब कार्यान्वयन IMHO है, मैं -pl "उन्नत" रिएक्टर विकल्प (कम xml, अधिक शक्ति और लचीलापन) पसंद करें:

mvn -pl module-2 package 
+0

@ पास्कल थिवेन्ट बस शानदार .. मुझे नहीं पता कि क्या कहना है .. धन्यवाद एम 8, जब आप मेवेन – ant

+0

पर आते हैं तो आप किसी के लिए दूसरे नहीं हैं। मैं सहमत हूं कि @ पास्कल एक मेवेन प्रतिभा है। मैं आवाज भी जोड़ूंगा कि एकाधिक प्रोफाइल कॉन्फ़िगर करने से रिएक्टर बिल्ड का उपयोग करना क्लीनर है। –

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