먼저 Ant 스크립트에서 나쁜 습관을 조장하는 경향이 있으므로 먼저 ant-contrib를 피하는 것이 좋습니다. 어떤 종류의 문자열 조작은 Ant의 filterchain
유형을 통해 수행 할 수 있습니다.
정규식에 관해서는 Wiktor의 패턴이 작동하지만,이 경우 부정적인 lookbehind를 선호합니다.
시험 대상 :
<target name="replace-version">
<property name="pom.project.version1" value="1.1.1" />
<loadresource property="snapshotVersionRepl1">
<propertyresource name="pom.project.version1" />
<filterchain>
<tokenfilter>
<replaceregex pattern="(.*)(?<!-SNAPSHOT)$" replace="\1-SNAPSHOT" />
</tokenfilter>
</filterchain>
</loadresource>
<echo>${snapshotVersionRepl1}</echo>
<property name="pom.project.version2" value="1.1.1-SNAPSHOT" />
<loadresource property="snapshotVersionRepl2">
<propertyresource name="pom.project.version2" />
<filterchain>
<tokenfilter>
<replaceregex pattern="(.*)(?<!-SNAPSHOT)$" replace="\1-SNAPSHOT" />
</tokenfilter>
</filterchain>
</loadresource>
<echo>${snapshotVersionRepl2}</echo>
</target>
출력 : <
가 XML 구문을 파손되지 않도록 <
대신 사용되는
[echo] 1.1.1-SNAPSHOT
[echo] 1.1.1-SNAPSHOT
하는 것으로.