2012-12-13 3 views
3

파일을 특정 위치로 복사해야하는 작업이 있습니다. 파일이 대상에 이미 있으면이 대상 파일의 이름을 바꿔야합니다 (.bak가 추가됨). 대상 파일이 없으면 파일을 그냥 넣어야합니다. 나는 소스 파일을 통해 복사하기 전에 대상에게 파일 이름을 바꿀 때Ant는 원본 파일의 이름을 바꾸는 동안 dir에 파일을 복사합니다.

<target name="install-jsps"> 
    <copy todir="target"> 
     <fileset dir="source"/> 
     <globmapper from="*.jsp" to="*.jsp.bak"/> 
    </copy> 
</target> 

이 그러나 소스를 파일의 이름을 바꿉니다 :

현재 나는이 있습니다. 일부 대상 파일이 원본 파일 세트에 없기 때문에 전체 대상 폴더의 이름을 바꿀 수 없습니다.

바람직하게 ant-contrib와 같은 외부 라이브러리를 사용하고 싶지 않습니다.

답변

5

두 개의 복사 작업으로 백업 작업을 수행 할 수 있습니다. 하나는 백업을 만들고, 다른 하나는 원본에서 새 파일을 복사합니다. 필요한 추가 비트는 백업을 만드는 데 사용되는 파일 세트의 present selector입니다. 선택기를 사용하면 대체 할 파일, 즉 소스 디렉토리에있는 파일 만 백업 할 수 있습니다.

<copy todir="dest"> 
    <fileset dir="dest" includes="*.jsp"> 
     <present targetdir="source" /> 
    </fileset> 
    <globmapper from="*" to="*.bak" /> 
</copy> 

<copy todir="dest"> 
    <fileset dir="source" includes="*.jsp" /> 
</copy> 
+0

브릴리언트! 'present' 태그에 대해 몰랐습니다. 고마워. –

관련 문제