如何在Ant';ReplaceRegExp';任务
我需要从Ant构建脚本在源文件中增加一个数字。我可以使用如何在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任务将值存储在文件中,因为我已经在同一个构建目
任务查找我要增加的数字,但是如何在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>