2008-09-25 57 views
9

我需要從Ant構建腳本中增加源文件中的數字。我可以使用ReplaceRegExp任務來查找想要增加的數字,但是如何在replace屬性內增加該數字?如何在Ant'ReplaceRegExp'任務中執行數學函數?

繼承人什麼我這麼遠:

<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

刪除「規則表達式」標籤 – 2008-09-26 16:11:40

回答

4

您可以使用類似:

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

所以Ant任務propertyfile。

0

好的問題,它可以在perl中完成,但我認爲它不可能在螞蟻,.NET和其他領域..如果我錯了,我真的很想知道,因爲這是一個很酷的概念,我已經在Perl中多次使用過,我可以在你提到的情況下真正使用它。

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 2008-09-25 18:02:30