2013-01-20 12 views
12

उदाहरण के लिए, मुझे Configuration${env:AAA} पर सेट करना होगा यदि कोई पर्यावरण परिवर्तनीय AAA है और यदि कोई ऐसा पर्यावरण परिवर्तनीय नहीं है तो कुछ अन्य स्थिर मूल्य पर।मैवेन में सशर्त गुणों को कैसे परिभाषित किया जाए?

मैं इसे मैवेन 2 में कैसे कर सकता हूं?

+0

तो क्या आप सशर्त रूप से एक संपत्ति सेट करना चाहते हैं? –

उत्तर

8

ऐसा लगता है कि आप activate a profile conditionally ...

<profiles> 
    <profile> 
    <activation> 
     <property> 
     <name>environment</name> 
     <value>test</value> 
     </property> 
    </activation> 
    ... 
    </profile> 
</profiles> 

प्रोफाइल सक्रिय जब वातावरण चर निम्न आदेश में के रूप में मूल्य test को परिभाषित किया गया है हो जाएगा:

mvn ... -Denvironment=test

+0

मुझे यह नहीं मिला। क्या आपका मतलब है कि मेवेन में संपत्ति की स्थिति नहीं है? अगर मेरे पास 10 गुण हैं और मैं पर्यावरण के माध्यम से प्रत्येक को ओवरराइड करने की अनुमति देना चाहता हूं, तो मुझे कितनी प्रोफाइल परिभाषित करनी चाहिए? – mark

+0

आपके निर्माण प्रणाली पर निर्भर करता है। यदि 10 गुण पारस्परिक रूप से अनन्य हैं, तो ऐसा प्रतीत होता है कि आपको 10 प्रोफाइल परिभाषित करने की आवश्यकता है। हालांकि, अगर यह मामला है तो मैं आपके तर्क की समीक्षा करने का सुझाव दूंगा। – hd1

+1

यह स्वीकार्य उत्तर – thermz

6

ऑफ़-मौके पर कि एक सिस्टम प्रॉपर्टी स्वीकार्य है, आप बस अपनी पीओएम फ़ाइल में संपत्ति को परिभाषित कर सकते हैं और आवश्यकता होने पर ओवरराइड कर सकते हैं:

<project> 
... 
    <properties> 
    <foo.bar>hello</foo.bar> 
    </properties> 
... 
</project> 

${foo.bar} का संदर्भ देकर आप अपने पीओएम में कहीं और इस संपत्ति का संदर्भ दे सकते हैं। कमांड लाइन पर ओवरराइड करने के लिए, बस एक नया मान पास करें:

mvn -Dfoo.bar=goodbye ... 
3

आप maven-antrun-plugin का उपयोग करके सशर्त रूप से एक संपत्ति सेट कर सकते हैं। उदाहरण सेटिंग install.path + मान को प्रतिबिंबित करना:

<plugin> 
    <!-- Workaround maven not being able to set a property conditionally based on environment variable --> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.8</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <exportAntProperties>true</exportAntProperties> 
       <target> 
        <property environment="env"/> 
        <condition property="install.path" value="${env.INSTALL_HOME}" else="C:\default-install-home"> 
         <isset property="env.INSTALL_HOME" /> 
        </condition> 
        <echo message="${install.path}"/> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

ध्यान दें कि यदि आप किसी अन्य 'maven-antrun-plugin' में '$ {install.path}' का उपयोग करने का प्रयास करते हैं, तो उनके पास एक ही संस्करण होना चाहिए। –

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