ant in - चींटी अगर और हालत?




hindi ants (5)

<project name="Build" basedir="." default="clean">
    <property name="default.build.type" value ="Release"/>

    <target name="clean">
    <echo>Value Buld is now  ${PARAM_BUILD_TYPE} is set</echo>
        <condition property="build.type" value="${PARAM_BUILD_TYPE}" else="${default.build.type}">
            <isset property="PARAM_BUILD_TYPE"/>
        </condition>

       <echo>Value Buld is now  ${PARAM_BUILD_TYPE} is set</echo>
       <echo>Value Buld is now  ${build.type} is set</echo>
    </target>
</project>

मेरे मामले में DPARAM_BUILD_TYPE=Debug यदि इसकी आपूर्ति की जाती है, तो मुझे डीबग के लिए निर्माण करने की आवश्यकता है अन्यथा मुझे रिलीज़ बिल्ड बनाने की आवश्यकता है। मैं लिखता हूं कि ऊपर की स्थिति ने काम किया और मैंने नीचे परीक्षण किया है क्योंकि यह मेरे लिए ठीक काम कर रहा है।

और संपत्ति ${build.type} हम इसे प्रसंस्करण के लिए अन्य लक्ष्य या macrodef को पास कर सकते हैं जो मैं अपने अन्य चींटी macrodef में कर रहा हूं।

D:\>ant -DPARAM_BUILD_TYPE=Debug
Buildfile: D:\build.xml
clean:
     [echo] Value Buld is now  Debug is set
     [echo] Value Buld is now  Debug is set
     [echo] Value Buld is now  Debug is set
main:
BUILD SUCCESSFUL
Total time: 0 seconds
D:\>ant
Buildfile: D:\build.xml
clean:
     [echo] Value Buld is now  ${PARAM_BUILD_TYPE} is set
     [echo] Value Buld is now  ${PARAM_BUILD_TYPE} is set
     [echo] Value Buld is now  Release is set
main:
BUILD SUCCESSFUL
Total time: 0 seconds

यह मेरे लिए शर्त को लागू करने के लिए काम करता है इसलिए उम्मीद है कि यह मददगार होगा।

अगर कोई चींटी कार्य के लिए उपयोग कर सकती है तो क्या कोई अन्य शर्त है?

यह वही है जो मैंने अब तक लिखा है:

<target name="prepare-copy" description="copy file based on condition">
        <echo>Get file based on condition</echo>
    <copy file="${some.dir}/true" todir="."  if="true"/>
</target>

यदि कोई शर्त सत्य है, तो ऊपर दी गई स्क्रिप्ट फ़ाइल को कॉपी कर लेगी। क्या होगा अगर हालत झूठी है और मैं दूसरी फाइल कॉपी करना चाहता हूँ? क्या यह चींटी में संभव है?

मैं उपरोक्त कार्य के लिए एक परम पारित कर सकता हूं और यह सुनिश्चित कर सकता हूं कि जो पारित हो चुका है वह परम है


आप चींटी कंट्रिब के इफ टास्क के साथ भी ऐसा कर सकते हैं।

<if>
    <equals arg1="${condition}" arg2="true"/>
    <then>
        <copy file="${some.dir}/file" todir="${another.dir}"/>
    </then>
    <elseif>
        <equals arg1="${condition}" arg2="false"/>
        <then>
            <copy file="${some.dir}/differentFile" todir="${another.dir}"/>
        </then>
    </elseif>
    <else>
        <echo message="Condition was neither true nor false"/>
    </else>
</if>

if विशेषता <copy> लिए मौजूद नहीं है। इसे <target> लागू किया जाना चाहिए।

नीचे एक उदाहरण है कि आप किसी लक्ष्य की निर्भरता विशेषता का उपयोग कैसे कर सकते हैं और if और unless आश्रित लक्ष्यों के निष्पादन को नियंत्रित करने के लिए विशेषता unless । दोनों में से किसी एक को ही निष्पादित करना चाहिए।

<target name="prepare-copy" description="copy file based on condition"
    depends="prepare-copy-true, prepare-copy-false">
</target>

<target name="prepare-copy-true" description="copy file based on condition"
    if="copy-condition">
    <echo>Get file based on condition being true</echo>
    <copy file="${some.dir}/true" todir="." />
</target>

<target name="prepare-copy-false" description="copy file based on false condition" 
    unless="copy-condition">
    <echo>Get file based on condition being false</echo>
    <copy file="${some.dir}/false" todir="." />
</target>

यदि आप ANT 1.8+ का उपयोग कर रहे हैं, तो आप संपत्ति विस्तार का उपयोग कर सकते हैं और यह बूलियन मूल्य निर्धारित करने के लिए संपत्ति के मूल्य का मूल्यांकन करेगा। तो, आप if="${copy-condition}" बजाय if="${copy-condition}" उपयोग कर सकते हैं।

ANT में 1.7.1 और इससे पहले, आप संपत्ति का नाम निर्दिष्ट करते हैं। यदि संपत्ति को परिभाषित किया गया है और इसका कोई मूल्य (यहां तक ​​कि एक खाली स्ट्रिंग) है, तो यह सच का मूल्यांकन करेगा।



आप कार्य के डिफ़ॉल्ट लक्ष्य संस्करण को अद्यतन करने के लिए {{ant.build.javac.target=1.5}} चींटी संपत्ति भी सेट कर सकते हैं। http://ant.apache.org/manual/javacprops.html#target देखें