我需要从Ant构建脚本中增加源文件中的数字。我可以使用ReplaceRegExp
任务来查找我想要增加的数字,但是如何在replace
属性中增加该数字?
到目前为止我得到了什么:
<replaceregexp file="${basedir}/src/path/to/MyFile.java"
match="MY_PROPERTY = ([0-9]{1,});"
replace="MY_PROPERTY = \1;"/>
在replace属性中,我该怎么做
replace="MY_PROPERTY = (\1 + 1);"
我不能使用buildnumber
任务将值存储在文件中,因为我已经在同一个构建目标中使用它。还有另一个ant任务可以让我增加属性吗?
答案 0 :(得分:4)
您可以使用以下内容:
<propertyfile file="${version-file}">
<entry key="revision" type="string" operation="=" value="${revision}" />
<entry key="build" type="int" operation="+" value="1" />
所以ant任务是属性文件。
答案 1 :(得分: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>
答案 2 :(得分:0)
好问题,它可以在类似的perl中完成,但我认为它在ant,.NET和其他方面不可能。如果我错了,我真的很想知道,因为那很酷我在Perl中多次使用的概念,我可以在你提到过的情况下真正使用它。