2011-09-08 11 views
11

मेरे पास दो मेवेन प्रोफ़ाइल प्रोफाइल-ए और प्रोफाइल-बी है। "बी" केवल सक्रिय होना चाहिए यदि "ए" सक्रिय नहीं है। तो अगर मैं कहेंगेमेवेन: केवल प्रोफ़ाइल ए सक्रिय करें यदि प्रोफ़ाइल बी सक्रिय नहीं है?

mvn install 

प्रोफ़ाइल बी निष्पादित किया जाता है (लेकिन प्रोफ़ाइल-ए नहीं)। लेकिन अगर मैं

mvn install -Pprofile-A 

तो फोन केवल प्रोफ़ाइल-ए निष्पादित किया जाता है (लेकिन प्रोफ़ाइल बी नहीं) होगा।

कोई संकेत देता है कि इसे प्राप्त करने के लिए मुझे अपने pom.xml को कैसे लिखना है?

मैं पहले से ही इस कोशिश की, लेकिन यह काम नहीं करता:

<profiles> 
    <profile> 
    <id>profile-A</id> 
    <activation> 
     <activeByDefault>false</activeByDefault> 
    </activation> 
    ... 
    </profile> 

    <profile> 
    <id>profile-B</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
     <property> 
     <name>!profile-A</name> 
     </property>  
     ... 
    </activation> 
    ... 
    </profile> 
</profiles> 

उत्तर

8

मैं अपेक्षा के अनुरूप काम करने के लिए अपने उदाहरण कमांड लाइन के लिए लगता है, आप सभी की जरूरत प्रोफ़ाइल बी के लिए <activeByDefault>true</activeByDefault> है

http://maven.apache.org/guides/introduction/introduction-to-profiles.html राज्य:

डिफ़ॉल्ट रूप से सक्रिय सभी प्रोफ़ाइल स्वचालित रूप से निष्क्रिय हो जाती हैं जब पीओएम में कोई प्रोफ़ाइल कमांड लाइन पर या उसके सक्रियण con के माध्यम से सक्रिय होती है अंजीर।

+0

बस एक बिंदु को स्पष्ट करना चाहता था जो मुझे लगभग 15 मिनट तक फेंक दिया। 'ActiveByDefault' (जोर मेरा) के संबंध में उपरोक्त लिंक के नवीनतम संस्करण से:" यह प्रोफ़ाइल स्वचालित रूप से सभी बिल्डों के लिए सक्रिय हो जाएगी जब तक कि एक ही प्रोफ़ाइल ** में एक अन्य प्रोफ़ाइल ** पहले वर्णित विधियों में से किसी एक का उपयोग करके सक्रिय नहीं किया जाता है। " मेरे मामले में, मैंने मूल पीओएम में प्रोफ़ाइल बी और एक बहु-मॉड्यूल निर्माण में एक पीओएम को प्रोफाइल ए में जोड़ा था। इस कॉन्फ़िगरेशन में, प्रोफ़ाइल बी को अक्षम नहीं किया गया था जब प्रोफ़ाइल ए को कमांड लाइन के माध्यम से सक्रिय किया गया था। प्रोफाइल ए और बी को उसी पीओएम में वांछित व्यवहार का उत्पादन किया। –

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