How can I carry out math functions in the Ant '

2019-08-02 13:01发布

我需要从一个Ant构建脚本增加在源文件中的数字。 我可以使用ReplaceRegExp任务找我要增加数量,但我怎么然后递增内的数字replace属性?

继承人什么我已经走到这一步:

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

在替换属性,我会怎么做

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

我不能使用buildnumber任务,因为我已经使用了相同的构建目标内的值存储在一个文件中。 是否有另一种蚂蚁的任务,让我增加的属性?

Answer 1:

您可以使用这样的:

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

所以Ant任务propertyfile。



Answer 2:

在蚂蚁,你一直得到了很少的情况下像这样的不太入模后备“脚本”标签。 这里有一个快速(乱)实现上述的:

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


Answer 3:

好问题,它可以在类似于Perl的工作要做,但我认为它在蚂蚁,.NET等领域..不可能的,如果我错了,我真的很想知道,因为这是一个很酷的概念,我“已经在Perl很多次,我能在情况下,实际上使用像你提到使用。



文章来源: How can I carry out math functions in the Ant 'ReplaceRegExp' task?
标签: regex ant