ANT 'REPLACEREGEXP'작업에서 수학 기능을 어떻게 수행 할 수 있습니까?
문제
개미 빌드 스크립트에서 소스 파일의 숫자를 증가시켜야합니다. 나는 그것을 사용할 수있다 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
동일한 빌드 대상 내에서 이미 사용하고 있으므로 파일에 값을 저장하는 작업입니다. 재산을 증가시킬 수있는 또 다른 개미 작업이 있습니까?
해결책
다음과 같은 것을 사용할 수 있습니다.
<propertyfile file="${version-file}">
<entry key="revision" type="string" operation="=" value="${revision}" />
<entry key="build" type="int" operation="+" value="1" />
따라서 개미 작업은 PropertyFile입니다.
다른 팁
개미에서는 항상 곰팡이에 맞지 않는 작은 케이스에 대한 폴백 "스크립트"태그가 있습니다. 위의 빠른 (지저분한) 구현은 다음과 같습니다.
<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>
좋은 질문, 그것은 그와 비슷한 perl에서 할 수 있지만, 개미, .net 및 기타 영역에서는 불가능하다고 생각합니다. 내가 틀렸다면 정말 알고 싶습니다. 'VE는 PERL에 여러 번 사용하여 언급 한 상황에서 실제로 사용할 수 있습니다.
제휴하지 않습니다 StackOverflow