2012-05-21 13 views
9

maven में एक बार आप को परिभाषित अपने modules में आप pom.xml सभी प्रोफाइल मॉड्यूल उन में परिभाषित कुल: (प्रासंगिकता का केवल)Maven में, एक प्रोफ़ाइल, मॉड्यूल ओवरराइड कर सकते हैं (के लिए किसी भी शामिल नहीं)

<project> 
    <modules> 
     <module>module1</module> 
    </modules> 
    <profiles> 
     <profile> 
      <id>pr1</id> 
      <modules> 
       <moudule>module2</module> 
      </modules> 

यदि आप mvn clean निष्पादित करते हैं तो यह कमांड को module1 पर पास कर देगा।

यदि आप mvn clean -Ppr1 जारी करते हैं तो यह module1 और module2 के साथ पास होगा।

मुझे आश्चर्य है कि maven 3 में pom.xml सबमिड्यूल के साथ और इसे ओवरराइड करना संभव है। मैं एक प्रोफ़ाइल के बजाय निर्माण बल उन जैसे करने के लिए अपने स्वयं के मॉड्यूल जोड़ने निष्पादित करने के लिए मतलब है:

<project> 
    <!-- omitted --> 
    <modules> 
     <!-- modules --> 
    </modules> 
    <build> 
     <!-- build --> 
    </build> 
    <profiles> 
     <profile> 
      <!-- This profile with no modules --> 
     </profile> 
    </profiles> 
</project> 

आवश्यकता मूर्खतापूर्ण ध्वनि सकता है, लेकिन मैं सिर्फ अगर वहाँ प्लगइन विन्यास में की तरह एक तंत्र है जानना चाहते हैं।

<configuration self.combine="override" 

सम्मान!

ssedano

+0

क्या आप अधिक विशिष्ट हो सकते हैं? मैं आपका प्रश्न बिल्कुल समझ में नहीं आया। –

उत्तर

11

यह संभव नहीं है। प्रोफाइल कॉन्फ़िगरेशन हमेशा मुख्य कॉन्फ़िगरेशन के साथ विलय किया जाता है, इसलिए आप केवल अपने मामले में मॉड्यूल जोड़ सकते हैं।

हालांकि, आप किसी भी प्रकार की "डिफ़ॉल्ट" प्रोफ़ाइल (<activeByDefault>true</activeByDefault><activation> सेक्शन में) बनाने के लिए क्या कर सकते हैं, यह तब सक्षम है जब कोई अन्य प्रोफ़ाइल नहीं आती है और वहां आपकी डिफ़ॉल्ट मॉड्यूल की सूची डाली जाती है। फिर, जब मेवेन बिल्ड कॉल पर कोई प्रोफ़ाइल निर्दिष्ट नहीं की जाती है, तो यह "डिफ़ॉल्ट" प्रोफ़ाइल उपयोग की जाती है, लेकिन जब आप स्पष्ट रूप से कम से कम एक प्रोफ़ाइल को कॉल करते हैं, तो ऐसा नहीं होता है, इसलिए आप इस तरह से मॉड्यूल की सूची को स्क्रैच से परिभाषित कर सकते हैं।

+0

@ माइकल निश्चित रूप से, मैं मॉड्यूल के साथ एक प्रोफाइल बना सकता हूं और निष्क्रिय कर सकता हूं। क्या आप मुझे उस साइट पर इंगित कर सकते हैं जहां आप इसे पढ़ते हैं। मुझे यह नहीं मिला। धन्यवाद! – ssedano

+0

अच्छा, मुझे यकीन नहीं है कि आप इस चाल का वर्णन कहां पा सकते हैं। लेकिन मेवेन के [परिचय प्रोफाइल का परिचय] पढ़ें (http://maven.apache.org/guides/introduction/introduction-to-profiles.html) जहां ' true' कथन का उपयोग किया जाता है और कवर किया जाता है और बस इसे अपने मॉड्यूल केस के साथ कार्यान्वित करें। और सख्त होने के लिए: आप इस डिफ़ॉल्ट प्रोफ़ाइल को निष्क्रिय नहीं करते हैं। जब अन्य प्रोफाइल का उपयोग किया जाता है तो यह स्वचालित रूप से सक्रिय नहीं होता है। –

+0

मेरा मतलब हमेशा मर्ज चीज था।लेकिन यह जवाब पर्याप्त है – ssedano

0

आप इस तरह कर सकते हैं:

<profiles> 
    <profile> 
     <id>run-xyz</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <modules> 
     <module>www-ab</module> 
     <module>www-cd</module> 
     </modules> 
    </profile> 

    <profile> 
     <id>run-its</id> 
     <activation> 
     <activeByDefault>false</activeByDefault> 
     </activation> 
     <modules> 
     <module>www-db</module> 
     <module>www-it</module> 
     </modules> 
    </profile> 
    </profiles> 

आप ऐसी बातों के बारे में बात कर रहे हैं। लेकिन मैं ऐसी चीजों के बारे में बहुत सावधान रहने की सलाह दूंगा।

यह केवल सवाल है कि आप सक्रिय ByDefault कैसे सेट करते हैं। इसके साथ किसी भी संयोजन को कम या कम बनाना संभव है।

+2

इस कॉन्फ़िगरेशन के साथ सभी मॉड्यूल चलाए जाएंगे। यह वह नहीं है जिसकी मुझे चाहत है। धन्यवाद! – ssedano

9

हालांकि सवाल पुराना है, Google अभी भी इसे बहुत अधिक रैंक करता है, इसलिए यह एक नया उत्तर जोड़ने का अर्थ है।

आप अपनी संपत्ति को प्राप्त करने के लिए चाल की अनुपस्थिति से सक्रियण का उपयोग कर सकते हैं।

<profiles> 
     <!-- By default, include the modules --> 
     <profile> 
      <id>full-build</id> 
      <activation> 
       <!-- Activation by absence of a property. Run normally, without -Dfull-build --> 
       <property> 
        <name>!skip-modules</name> 
       </property> 
      </activation> 
      <modules> 
       <module>module1</module> 
       <module>module2</module> 
       <module>module3</module> 
      </modules> 
     </profile> 

     <!-- No-modules build --> 
     <profile> 
      <id>no-modules</id> 
      <activation> 
       <!-- Activation by a property. Run with -Dskip-modules to activate --> 
       <property> 
        <name>skip-modules</name> 
       </property> 
      </activation> 
      <modules> 
      </modules> 
     </profile> 
    </profiles> 
संबंधित मुद्दे