如何在Ant';ReplaceRegExp';任务

如何在Ant';ReplaceRegExp';任务,regex,ant,Regex,Ant,我需要从Ant构建脚本在源文件中增加一个数字。我可以使用任务查找我要增加的数字,但是如何在replace属性中增加该数字 到目前为止,我得到的是: <replaceregexp file="${basedir}/src/path/to/MyFile.java" match="MY_PROPERTY = ([0-9]{1,});" replace="MY_PROPERTY = \1;"/> 我不能使用buildnumber任务将值存储在文件中,因为我已经在同一个构建目

我需要从Ant构建脚本在源文件中增加一个数字。我可以使用
任务查找我要增加的数字,但是如何在
replace
属性中增加该数字

到目前为止,我得到的是:

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

我不能使用
buildnumber
任务将值存储在文件中,因为我已经在同一个构建目标中使用了该值。是否还有另一个ant任务可以让我增加属性?

您可以使用以下方法:



所以ant任务是propertyfile。

好问题,它可以在类似的perl中完成,但我认为在ant、.NET和其他领域是不可能的。。如果我错了,我真的很想知道,因为这是一个很酷的概念,我在Perl中使用过很多次,我可以在您提到的情况下使用它

在ant中,对于像这样不太适合模型的小案例,您总是有后备“脚本”标签。下面是上述内容的快速(混乱)实现:

    <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>

正则表达式=/.*MY_属性=(\d+).*/;
t=java.io.File.createTempFile('test-File','txt');
w=新的java.io.PrintWriter(t);
f=新的java.io.File(propertiesFile);
r=newjava.io.BufferedReader(newjava.io.FileReader(f));
line=r.readLine();
while(行!=null){
m=regex.exec(行);
如果(m){
val=parseInt(m[1])+1;
line='MY_PROPERTY='+val;
}
w、 println(行);
line=r.readLine();
}
r、 close();
w、 close();
f、 删除();
t、 抵运(f);

之前没有遇到脚本标记,谢谢您指出!我确实认为使用更好。删除“正则表达式”标记
    <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>