2011-06-30 8 views
7

मेरे पास एक चींटी कार्य है जिसमें एम्बेडेड जावास्क्रिप्ट शामिल है। मैं लक्ष्य करना चाहते हैं असफल या कुछ तर्क मैं जावास्क्रिप्ट में चलाने के आधार पर सफलता प्राप्त करें:चींटी जावास्क्रिप्ट विफलता

<target name="analyze"> 
    <script language="javascript"> 
    <![CDATA[ 
      importClass(java.io.File); 
      importClass(java.io.FileReader) 
      importClass(java.io.BufferedReader) 

      String.prototype.startsWith = function(str) { 
       return (this.indexOf(str) === 0); 
      } 

      String.prototype.endsWith = function(str) { 
       var lastIndex = this.lastIndexOf(str); 
       return (lastIndex != -1) && (lastIndex + str.length == this.length); 
      } 

      //setup the source directory 
      srcDir = project.getProperty("MY_HOME") + "/foo/src"; 

      if(srcDir.startsWith("/foo") { 
      //TARGET SHOULD PASS 
      } else { 
      //TARGET SHOULD FAIL 
      } 

    ]]> 
    </script> 
</target> 

उत्तर

7

आप एग्जिट एपीआई के माध्यम से चींटी निकास कर सकते हैं, लेकिन इससे एक बिल्ड अपवाद फेंकता है जो एक गंदे स्टैक ट्रेस का कारण बनता है। साफ विधि जावास्क्रिप्ट में एक गुण सेट करने के लिए किया जाएगा तो fail task का उपयोग कर परीक्षण:

जावास्क्रिप्ट:

project.setProperty("javascript.fail.message", "There was a problem"); 

चींटी, तुरंत बाद स्क्रिप्ट कार्य:

<fail if="javascript.fail.message" message="${javascript.fail.message}" /> 
+0

मार्टिन, यह वैसे ही काम करता है जिस तरह से मैं इसे चाहता हूं। आपने मेरे सभी सवालों का शानदार जवाब दिया है, मैं डर में खड़ा हूं। –

+0

अगर मैं कर सकता तो मैं इस जवाब को 5 बार वोट दूंगा। –

+0

@ एमीर - आप बहुत दयालु हैं। मदद करने में खुशी हुई, लेकिन खेद है कि मैं पहले जवाब लिखने के लिए नहीं मिला - काम रास्ते में आया। –

2

एक और लक्ष्य:

<target name="failme"><fail/></target> 

स्क्रिप्ट:

`project.executeTarget("failme");` 

जांची नहीं। Documentation

+0

इस चालाक लगता है। जब मैंने इसका परीक्षण किया तो मुझे कुछ मिला: लपेटा अपवाद: कोई संदेश नहीं। किसी भी विचार के साथ क्या करना है? –

+0

ऐसा लगता है लेकिन एक स्क्रिप्ट अपवाद फेंकता है। मैं स्क्रिप्ट के बिना अपवादों को निष्पादित करना चाहता हूं, और लक्ष्य स्वयं विफल होने के लिए। क्या मेरी लिपि से चींटी पर वापस बूलियन का प्रचार करने का कोई तरीका है? –

+0

यह तकनीकी रूप से काम करता है, +1। –