2008-09-25 12 views
9

मुझे एंट बिल्ड स्क्रिप्ट से स्रोत फ़ाइल में एक संख्या बढ़ाने की आवश्यकता है। मैं जिस नंबर को बढ़ाना चाहता हूं उसे ढूंढने के लिए ReplaceRegExp कार्य का उपयोग कर सकता हूं, लेकिन फिर मैं उस संख्या को replace विशेषता के भीतर कैसे बढ़ा सकता हूं?मैं चींटी 'ReplaceRegExp' कार्य में गणित कार्यों को कैसे कर सकता हूं?

मैं अब तक Heres क्या मिल गया है:

<replaceregexp file="${basedir}/src/path/to/MyFile.java" 
    match="MY_PROPERTY = ([0-9]{1,});" 
    replace="MY_PROPERTY = \1;"/> 

की जगह विशेषता में, मैं कैसे करना होगा

replace="MY_PROPERTY = (\1 + 1);" 

मैं एक में मान संग्रहीत buildnumber कार्य उपयोग नहीं कर सकते फ़ाइल के बाद से मैं पहले से ही उसी निर्माण लक्ष्य के भीतर उपयोग कर रहा हूं। क्या कोई और चींटी कार्य है जो मुझे संपत्ति बढ़ाने में मदद करेगा?

+0

निकालें 'नियमित-भाव' टैग –

उत्तर

4

आप की तरह कुछ का उपयोग कर सकते हैं:

<propertyfile file="${version-file}"> <entry key="revision" type="string" operation="=" value="${revision}" /> <entry key="build" type="int" operation="+" value="1" />

तो चींटी कार्य propertyfile है।

0

अच्छा सवाल, यह इसी तरह के पर्ले में किया जा सकता है, लेकिन मुझे लगता है कि यह चींटी, .NET और अन्य क्षेत्रों में संभव नहीं है .. अगर मैं गलत हूं, तो मैं वास्तव में जानना चाहता हूं, क्योंकि यह एक है कूल अवधारणा जिसे मैंने पर्ल में कई बार उपयोग किया है कि मैं वास्तव में आपके द्वारा वर्णित स्थितियों में उपयोग कर सकता हूं।

4

चींटी में, आपको हमेशा इस तरह के छोटे मामलों के लिए फॉलबैक "स्क्रिप्ट" टैग मिल गया है जो मोल्ड में काफी फिट नहीं है। यहां एक त्वरित (गंदा) से ऊपर के कार्यान्वयन है:

<property name="propertiesFile" location="test-file.txt"/> 

    <script language="javascript"> 
     regex = /.*MY_PROPERTY = (\d+).*/; 

     t = java.io.File.createTempFile('test-file', 'txt'); 
     w = new java.io.PrintWriter(t); 
     f = new java.io.File(propertiesFile); 
     r = new java.io.BufferedReader(new java.io.FileReader(f)); 
     line = r.readLine(); 
     while (line != null) { 
      m = regex.exec(line); 
      if (m) { 
       val = parseInt(m[1]) + 1; 
       line = 'MY_PROPERTY = ' + val; 
      } 
      w.println(line); 
      line = r.readLine(); 
     } 
     r.close(); 
     w.close(); 

     f.delete(); 
     t.renameTo(f); 
    </script> 
+0

नहीं यह उनका कहना है के लिए पहले स्क्रिप्ट टैग के पार चलो, धन्यवाद! मुझे लगता है कि का उपयोग करना बेहतर है हालांकि। – roryf

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

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