2011-02-25 15 views
6

मैं एक एंटी तर्क मान वैकल्पिक रूप से 2 लक्ष्य बनाने के बिना शामिल करना चाहता हूं जो अतिरिक्त तर्क के अलावा मूल रूप से वही होगा। उदाहरण के लिए:वैकल्पिक चींटी तर्क

<target name="A" depends="C">...</target> 

<target name="B" depends="C">...</target> 

<target name="C"> 
    <java fork="true" ...> 
     <jvmarg .../> 
     <arg .../> 
     <arg .../> 
     ... 
     # now, if the dependency is from A, no more args 
     # if from B 
      <arg value="xxx"/> 
    </java> 
</target> 
+0

आप 'जब तक' कथन का प्रयास नहीं कर सकते। मैं खुद को चींटी के लिए नया हूं, इसलिए सुनिश्चित नहीं है कि यह तर्क के लिए काम करेगा, लेकिन कई कार्यों के लिए यह करता है। ऐसा लगता है: args.allset एक ऐसी संपत्ति है जिसे आप एक लक्ष्य में 'सत्य' के रूप में परिभाषित कर सकते हैं और किसी अन्य – kostja

उत्तर

3

बजाय depend कार्य सी पर ing, आप एक param रूप B तर्क पारित करने के लिए Antcall काम इस्तेमाल कर सकते हैं।

<target name="A" > 
    <antcall target="C" /> 
    .... 
</target> 

<target name="B" > 
    <antcall target="C" > 
    <param name="extra_arg" value="xxx" /> 
    </antcall> 
    ... 
</target> 

<target name="C"> 
    <java fork="true" ...> 
     <jvmarg .../> 
     <arg .../> 
     <arg .../> 
     <arg value="${extra_arg}"/> 
    </java> 
</target> 

संपादित करें: निको टिप्पणी में बताते हैं, यह अगर मूल्य जवाब एक अशक्त स्ट्रिंग के लिए तर्क स्थापित करने के लिए condition कार्य का उपयोग करने के लिए बढ़ाया जा सकता ए से सेट नहीं होने पर काम नहीं करता।

<condition property="argToUseIfFromB" else=""> 
    <isset property="extra_arg" />  
</condition> 
<java fork="true" ...> 
    <jvmarg .../> 
    <arg .../> 
    <arg .../> 
    <arg value="${argToUseIfFromB}"/> 
</java> 

को और संपादित: जब से हम नहीं मिल सकता है तर्क वैकल्पिक के रूप में मान्यता प्राप्त होना है, हम हर माता-पिता काम से पूरे आदेश पंक्ति में पारित कर सकते हैं। लक्ष्य A केवल सामान्य तर्कों को पारित करेगा; B एक अतिरिक्त तर्क के माध्यम से गुजर जाएगा। arguments पर चींटी मैनुअल मुझे इससे बेहतर बताता है।

<target name="A" > 
    <antcall target="C"> 
    <param name="java_args" value="arg_a arg_b" /> 
    </antcall> 
    .... 
</target> 

<target name="B" > 
    <antcall target="C" > 
    <param name="java_args" value="arg_a arg_b extra_arg" /> 
    </antcall> 
    ... 
</target> 

<target name="C"> 
    <java fork="true" ...> 
     <jvmarg .../> 
     <arg line="${java_args}"/> 
    </java> 
</target> 
+0

में 'झूठी' नहीं है, यह करता है काम नहीं। जब ए कॉल करता है तो यह एक त्रुटि फेंक देगा, क्योंकि उस चरण में * अतिरिक्त_र्ग * परिभाषित नहीं किया गया है। ठीक है जब बी कॉल करता है सी –

+0

@ निको: आप बिल्कुल सही हैं। क्या यह बेहतर संपादन है? – DoctorRuss

+0

अभी भी नहीं। यह आपके मूल जैसा ही है। यह कहकर कि "वैध तर्क नहीं है। ऐसा लगता है कि यह शून्य है, फिर भी यह एक तर्क के रूप में इसे मजबूर करने की कोशिश करता है। –

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