9

我需要在 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任务将值存储在文件中,因为我已经在同一个构建目标中使用它。是否有另一个 ant 任务可以让我增加属性?

4

3 回答 3

4

你可以使用类似的东西:

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

所以蚂蚁任务是propertyfile。

于 2008-09-25T12:55:51.320 回答
4

在 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>
于 2008-09-25T16:59:52.370 回答
0

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

于 2008-09-25T12:58:20.893 回答