ANT 'REPLACEREGEXP'작업에서 수학 기능을 어떻게 수행 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/133111

  •  02-07-2019
  •  | 
  •  

문제

개미 빌드 스크립트에서 소스 파일의 숫자를 증가시켜야합니다. 나는 그것을 사용할 수있다 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에 여러 번 사용하여 언급 한 상황에서 실제로 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top