정규 표현식을 기반으로 파일의 이름을 임의로 바꿀 수있는 <copy>
작업을 사용하여 일반 Ant 빌드 스크립트를 작성하고 싶습니다. 중첩 된 <regexpmapper>
은 프로젝트 별 특성 파일의 이름 바꾸기 패턴이있는 경우로드합니다.개미 regexp 매퍼 : 파일에서 패턴을 읽으시겠습니까?
누군가 이미이 작업을 수행 했나요? 아니면 자체 매퍼를 작성해야합니까?
정규 표현식을 기반으로 파일의 이름을 임의로 바꿀 수있는 <copy>
작업을 사용하여 일반 Ant 빌드 스크립트를 작성하고 싶습니다. 중첩 된 <regexpmapper>
은 프로젝트 별 특성 파일의 이름 바꾸기 패턴이있는 경우로드합니다.개미 regexp 매퍼 : 파일에서 패턴을 읽으시겠습니까?
누군가 이미이 작업을 수행 했나요? 아니면 자체 매퍼를 작성해야합니까?
다음은이 작업을 수행하는 방법에 대한 예입니다.
프로젝트 속성은 proj_props.txt
에 포함 된 파일 :
use.filter=regexp.mapper
from.regexp=(.*)_test(.*)
to.regexp=\\1\\2
(문자열로 탈출에게의 \
을 참고.)
위해 빌드 파일 :
<property file="proj_props.txt" />
<!-- filter for regexp -->
<filtermapper id="regexp.mapper">
<tokenfilter>
<replaceregex pattern="${from.regexp}"
replace="${to.regexp}" />
</tokenfilter>
</filtermapper>
<!-- identity filter, used when no regexp needed -->
<filtermapper id="identity.mapper" />
<!-- decide which filter to use -->
<condition property="chosen.mapper"
value="regexp.mapper" else="identity.mapper">
<isset property="use.filter" />
</condition>
<copy todir="...">
<fileset>
...
</fileset>
<filtermapper refid="${chosen.mapper}" />
</copy>
당신은 filtermapper
경우, 하나의 몇 가지를 정의 프로젝트 등록 정보 파일의 등록 정보를 기반으로 정규 표현식을 바꾸는 작업을 수행하는 다른 작업 맡은 일. use.filter
속성은 선택되는 항목을 결정합니다. 프로젝트 속성 파일이 존재하지 않으면 use.filter
이 설정되지 않으므로 '아무것도하지 않는'ID 필터 매퍼가 사용됩니다.
copy
작업에서 중첩 된 리소스를 사용할 때만 작동한다는 점에 유의하십시오. 복사 할 파일이 하나 뿐이고 <copy file="..."
을 사용하면 filtermapper가 무시됩니다.