2008-09-25 14 views
6

जब मैं कार्य का उपयोग करता हूं, तो संसाधन केवल तभी सेट किया जाता है जब संसाधन (फ़ाइल कहें) उपलब्ध हो। यदि नहीं, संपत्ति अपरिभाषित है।चींटी और उपलब्ध कार्य - यदि कुछ उपलब्ध नहीं है तो क्या होगा?

जब मैं संपत्ति के मूल्य को मुद्रित करता हूं, तो संसाधन उपलब्ध होने पर यह सत्य होता है, लेकिन अन्यथा केवल संपत्ति का नाम प्रिंट करता है।

क्या संसाधन उपलब्ध नहीं है, तो संपत्ति को कुछ मूल्य पर सेट करने का कोई तरीका है? मैं उपलब्ध जाँच से पहले स्पष्ट रूप से संपत्ति की स्थापना की कोशिश की है, लेकिन फिर चींटी की शिकायत:

 
[available] DEPRECATED - used to override an existing property. 
[available] Build file should not reuse the same property name for different values. 

उत्तर

14

आप नहीं के साथ संयोजन में एक शर्त का उपयोग कर सकते हैं:

http://ant.apache.org/manual/Tasks/condition.html

<condition property="fooDoesNotExist"> 
    <not> 
     <available filepath="path/to/foo"/> 
    </not> 
    </condition> 
2

इस का कारण व्यवहार लक्ष्य में अगर/जब तक गुण नहीं हैं। इस तरह के एक विशेषता के साथ लक्ष्य निष्पादित किया जाएगा यदि नाम के साथ एक संपत्ति सेट है। यदि यह गलत पर सेट है या सत्य पर सेट है तो कोई फर्क नहीं पड़ता। तो आप किसी प्रॉपर्टी को सेट (या नहीं) सेट करने के लिए उपलब्ध कार्य (या नहीं) के लिए उपलब्ध कार्य का उपयोग कर सकते हैं। उपलब्ध-कार्य से पहले संपत्ति को सेट करना कोई समाधान नहीं है, क्योंकि चींटी में गुण अपरिवर्तनीय हैं, उन्हें सेट के बाद बदला नहीं जा सकता है।

तीन संभावित हल कर रहे हैं, एक मूल्य के लिए एक गुण सेट करने के लिए करता है, तो सेट नहीं से पहले:

  1. आप नहीं के साथ संयोजन में उपलब्ध कार्य का उपयोग करें।
  2. आप संपत्ति को सेट करने का कार्य बनाते हैं, जो केवल तभी निष्पादित किया जाएगा जब संपत्ति अनसेट हो (जब तक कि कार्य की विशेषता न हो)।
  3. उपलब्ध होने के बाद आप बस पर संपत्ति सेट करें। चूंकि संपत्ति अनसेट होने पर ही बदली जाएगी, यह वही करेगा जो आप चाहते हैं।
8
<available filepath="/path/to/foo" property="foosThere" value="true"/> 
<property name="foosThere" value="false"/> 

foosThere का काम केवल सफल हो जाएगा, यदि वह पहले अपनी उपलब्धता की जांच से सही पर सेट नहीं किया गया है।

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