ant-contrib-अगर/फिर/अन्य कार्य




(4)

चींटी गुणों को अधिलेखित करने के लिए बहुत मुश्किल है (यदि असंभव नहीं है)। आपको क्या चाहिए वैरिएबल इन चीजों को भी चींटी प्रतिदीप जार में भी परिभाषित किया गया है।

आपका उदाहरण संपादित करना:

  <target name="ifthen"> 
    <var name="Evangelist" value="${giv}" />
    <echo message="input name: ${Evangelist}" />
    <if>
      <equals arg1="${Evangelist}" arg2="Mark" />
      <then>
      </then>
      <else>
        <var name="Evangelist" value="John" />
      </else>
    </if>   
    <echo message="should be overwritten with John except for Mark: ${Evangelist}" />
 </target>

मैं चींटी का उपयोग कर रहा हूं, और मुझे / then / else कार्य, (ant-contrib-1.0b3.jar) के साथ एक समस्या है। मैं कुछ चल रहा हूं जो नीचे build.xml के साथ सरल किया जा सकता है

मुझे 'एंट-डिजीव = ल्यूक' संदेश से प्राप्त होने की उम्मीद है

input name: Luke
should be overwritten with John except for Mark: John

लेकिन ऐसा प्रतीत होता है कि संपत्ति "giv" के अंदर ओवरराइट नहीं है अगर / फिर / अन्य ..

input name: Luke
should be overwritten with John except for Mark: Luke

क्या यह इस तथ्य से निर्भर करता है कि मैं ${giv} बराबर कार्य का उपयोग कर रहा हूं? अन्यथा मेरे कोड में क्या गलत है?

build.xml CODE:

<project name="Friend" default="ifthen" basedir=".">

<property name="runningLocation" location="" />
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
        <pathelement location="${runningLocation}/antlib/ant-contrib-1.0b3.jar" />
    </classpath>
</taskdef>

<target name="ifthen">
<echo message="input name: ${giv}" />
<if>
    <equals arg1="${giv}" arg2="Mark" />
    <then>
    </then>
    <else>
        <property name="giv" value="John" />
    </else>
</if>
<echo message="should be overwritten with John except for Mark: ${giv}" />
</target>
</project>

<project name="Friend" default="ifthen" basedir=".">

<property name="runningLocation" location="" />
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
        <pathelement location="${runningLocation}/antlib/ant-contrib-1.0b3.jar" />
    </classpath>
</taskdef>

<target name="ifthen">
<echo message="input name: ${giv}" />
<if>
    <equals arg1="${giv}" arg2="Mark" />
    <then>
    </then>
    <else>
        <var name="giv" unset="true"/>
        <property name="giv" value="John" />
    </else>
</if>
<echo message="should be overwritten with John except for Mark: ${giv}" />
</target>
</project>

संपत्ति को भी बिना सेट करने के लिए हम var कार्य का उपयोग कर सकते हैं।


एंट-कॉन्ट्रिब 'प्रॉपर्टीकॉपी' का उपयोग करके संपत्ति के मूल्य को पुन: असाइन करना संभव है। यह ant-contrib चर का उपयोग करने के लिए एक विकल्प है इस तरह संपत्ति "giv" ओवरराइट किया जा सकता है

<target name="ifthen">
  <echo message="input name: ${giv}" />
  <if>
    <equals arg1="${giv}" arg2="Mark" />
    <then>
    </then>
    <else>
      <property name="tempName" value="John" />
      <propertycopy name="giv" from="tempName" override="true" />
    </else>
  </if>
  <echo message="should be overwritten with John except for Mark: ${giv}" />
</target>

ध्यान रखें कि प्रॉपर्टी tempName पहले से ही 'जॉन' के अलावा अन्य मान पर सेट नहीं है


चींटी में संपत्ति हमेशा एक बार सेट होती है इसके बाद बदलाव नहीं किया जा सकता है

यहां मानक चींटी का उपयोग करते हुए एक समाधान है (चींटी-विरोधी के बिना) जो कुछ अन्य लोगों के लिए उपयोगी हो सकता है जो एक और निर्भरता नहीं चाहते हैं।

<target name="test"  >
    <echo message="input name: ${param}" />

    <condition property="cond" >
        <equals arg1="${param}" arg2="Mark" />
    </condition>
</target>

<target name="init" depends="test" if="cond"> 
    <property name="param2" value="Mark" />
</target>

<target name="finalize" depends="init"> 
    <property name="param2" value="John" />
    <echo message="should be overwritten with John except for Mark: ${param2}" />
</target>