2016-01-12 2 views
5

के साथ pom.xml पर्यावरण परिवर्तक मैं पर्यावरण परिवर्तनीय का उपयोग करने में सक्षम होना चाहूंगा यदि यह सेट है या डिफ़ॉल्ट फॉलबैक मान जो मैंने pom.xml में सेट किया है, जैसे कि $ {VARIABLE: -default} bash में । क्या यह संभव है? कुछ की तरह:डिफ़ॉल्ट फॉलबैक

${env.BUILD_NUMBER:0} 
+2

वहाँ एक अच्छा जवाब यहाँ है: http://stackoverflow.com/ ए/1370 9976/868456 – Dimath

+0

@ डिमाथ समाधान प्रस्तावित उत्तर से कहीं अधिक आसान प्रतीत होता है .. – lifeofguenter

उत्तर

6

आप इस लक्ष्य को हासिल करने के लिए इस्तेमाल कर सकते हैं प्रोफाइल:

<profiles> 
    <profile> 
     <id>buildnumber-defined</id> 
     <activation> 
      <property> 
       <name>env.BUILD_NUMBER</name> 
      </property> 
     </activation> 
     <properties> 
      <buildnumber>${env.BUILD_NUMBER}</buildnumber> 
     </properties> 
    </profile> 
    <profile> 
     <id>buildnumber-undefined</id> 
     <activation> 
      <property> 
       <name>!env.BUILD_NUMBER</name> 
      </property> 
     </activation> 
     <properties> 
      <buildnumber>0</buildnumber> 
     </properties> 
    </profile> 
</profiles> 

थोड़ा बैश की तुलना में अधिक वर्बोज़ ...

+0

जहाँ तक मुझे पता है कि मुझे 'mvn -P buildnumber-undefined' पास करने की आवश्यकता होगी, है ना? मैं बाद में pom.xml में इसका उपयोग कैसे करूं? – Gavriel

+0

उपयुक्त प्रोफ़ाइल पर्यावरण चर 'BUILD_NUMBER' के अस्तित्व या गैर-अस्तित्व के आधार पर सक्रिय की जाएगी। बाद में संपत्ति 'buildnumber' को आपके पोम में परिभाषित किया जाना चाहिए और '$ {buildnumber}' के साथ पहुंचा जा सकता है। – StephaneM

+0

जहां तक ​​मुझे पता है, आपको इसके लिए दो प्रोफाइल की आवश्यकता नहीं है (कम से कम हाल ही में मेवेन रिलीज़ में)। आप शीर्ष स्तर ' 'में डिफ़ॉल्ट प्रदान कर सकते हैं और फिर यह केवल कस्टम सक्रियण (इस उत्तर में पहली प्रोफ़ाइल) के साथ ओवरराइड हो गया है। 11 लाइनें बचाता है :) – nerdwaller

9

मैं वास्तव में स्वीकार किए जाते हैं दृष्टिकोण से संतुष्ट नहीं था इसलिए, मैंने इसे थोड़ा सा सरल बना दिया।

मूल रूप से सामान्य गुण ब्लॉक में एक डिफ़ॉल्ट गुण सेट है, और केवल ओवरराइड जब उचित हो (एक प्रभावी स्विच बयान के बजाय):

<properties> 
    <!-- Sane default --> 
    <buildNumber>0</buildNumber> 
    <!-- the other props you use --> 
</properties> 

<profiles> 
    <profile> 
     <id>ci</id> 
     <activation> 
      <property> 
       <name>env.buildNumber</name> 
      </property> 
     </activation> 
     <properties> 
      <!-- Override only if necessary --> 
      <buildNumber>${env.buildNumber}</buildNumber> 
     </properties> 
    </profile> 
</profiles> 
संबंधित मुद्दे