ant - scientific - अगर अन्य शर्त लागू करने के लिए शुद्ध चींटी का उपयोग करें(कमांड लाइन इनपुट की जांच करें)




ants facts (2)

मैं चींटी में एक नौसिखिया हूं मेरी चींटी स्क्रिप्ट को कमांड लाइन से " env " नामक एक उपयोगकर्ता इनपुट चर प्राप्त होता है:

जैसे कि ant doIt -Denv=test

उपयोगकर्ता इनपुट वैल्यू " टेस्ट ", " देव " या " प्रॉड " हो सकती है।

मेरे पास " doIt " लक्ष्य भी है:

<target name="doIt">
  //What to do here?
</target>

मेरे लक्ष्य में, मैं अपनी चींटी स्क्रिप्ट के लिए अगर अन्य शर्त का पालन करना चाहूंगा:

if(env == "test")
  echo "test"
else if(env == "prod")
  echo "prod"
else if(env == "dev")
  echo "dev"
else
  echo "You have to input env"

यह जांचने के लिए कि उपयोगकर्ता द्वारा कमांड लाइन से कौन सा मूल्य दिया गया है, उसके बाद, एक संदेश प्रिंट करें

मैं चींटी-प्रतिबंधा के साथ जानता हूं, मैं <if> <else> साथ चींटी स्क्रिप्ट लिख सकता हूँ लेकिन मेरी परियोजना के लिए, मैं अगर अन्य स्थिति लागू करने के लिए शुद्ध चींटी का उपयोग करना चाहता हूं। शायद, मुझे <condition> उपयोग करना चाहिए ?? लेकिन मुझे यकीन नहीं है कि कैसे मेरे तर्क के लिए <condition> का उपयोग करें। क्या कोई कृपया मेरी यह मदद कर सकता है?


आप कुछ लक्ष्यों को बना सकते हैं और उपयोग कर सकते हैं / unless टैग्स नहीं।

<project name="if.test" default="doIt">

    <target name="doIt" depends="-doIt.init, -test, -prod, -dev, -else"></target>

    <target name="-doIt.init">
        <condition property="do.test">
            <equals arg1="${env}" arg2="test" />
        </condition>
        <condition property="do.prod">
            <equals arg1="${env}" arg2="prod" />
        </condition>
        <condition property="do.dev">
            <equals arg1="${env}" arg2="dev" />
        </condition>
        <condition property="do.else">
            <not>
                <or>
                <equals arg1="${env}" arg2="test" />
                <equals arg1="${env}" arg2="prod" />
                <equals arg1="${env}" arg2="dev" />
                </or>
            </not>
        </condition>
    </target>

    <target name="-test" if="do.test">
        <echo>this target will be called only when property $${do.test} is set</echo>
    </target>

    <target name="-prod" if="do.prod">
        <echo>this target will be called only when property $${do.prod} is set</echo>
    </target>

    <target name="-dev" if="do.dev">
        <echo>this target will be called only when property $${do.dev} is set</echo>
    </target>

    <target name="-else" if="do.else">
        <echo>this target will be called only when property $${env} does not equal test/prod/dev</echo>
    </target>

</project>

साथ लक्ष्य - उपसर्ग निजी है इसलिए उपयोगकर्ता उन्हें कमांड लाइन से चलाने में सक्षम नहीं होंगे।


अगर आप में से किसी को सादे की आवश्यकता होती है तो / else शर्त (बिना किसी अन्य के ); तो नीचे का प्रयोग करें:

यहाँ मैं एक env चर DMAPM_BUILD_VER पर निर्भर हूँ, लेकिन ऐसा हो सकता है कि यह चर env में सेट नहीं है। इसलिए मुझे एक स्थानीय मान को डिफ़ॉल्ट करने के लिए तंत्र की आवश्यकता है।

    <!-- Read build.version value from env variable DMAPM_BUILD_VER. If it is not set, take default.build.version. -->
    <property name="default.build.version" value="0.1.0.0" />
    <condition property="build.version" value="${env.DMAPM_BUILD_VER}" else="${default.build.version}">
        <isset property="env.DMAPM_BUILD_VER"/>
    </condition>