2011-01-28 3 views
1

정규 표현식을 기반으로 파일의 이름을 임의로 바꿀 수있는 <copy> 작업을 사용하여 일반 Ant 빌드 스크립트를 작성하고 싶습니다. 중첩 된 <regexpmapper>은 프로젝트 별 특성 파일의 이름 바꾸기 패턴이있는 경우로드합니다.개미 regexp 매퍼 : 파일에서 패턴을 읽으시겠습니까?

누군가 이미이 작업을 수행 했나요? 아니면 자체 매퍼를 작성해야합니까?

답변

1

다음은이 작업을 수행하는 방법에 대한 예입니다.

프로젝트 속성은 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가 무시됩니다.

관련 문제