2014-07-13 2 views
0

개미를 사용하여 한 폴더에서 다른 폴더로 파일을 복사해야합니다.Ant의 파일을 동적 디렉토리 이름으로 복사

<copy todir="${env.WORKSPACE}/my_dist_folder*" > 
    <fileset dir="${env.WORKSPACE}/my_src_folder"> 
     <exclude name="**/*.svn"/> 
    </fileset> 
</copy> 
다음 todir 속성에 *를 통지하십시오 ( 나는의 src 파일의 정확한 이름을 알고 있지만 나는 다음과 같은 스크립트를 사용하는 버전을 기반으로 폴더입니다하지만 작동하지 않았기 때문에 대상 파일이 불명

조언을 주시기 바랍니다 덕분에 여러 my_dist_folder-xx.. 폴더가있을 수 있습니다 가정

+0

'my_dist_folder'의 샘플을 게시 할 수 있습니까? – sunbabaphu

+0

이것은 폴더의 이름입니다! –

+0

*'버전 기반 폴더이므로 대상 파일은 알 수 없습니다. '*. ** dest를 추측하고 있습니다. 폴더 이름 ** 형식은'my_dist_folder_ '입니다. 그래서, 당신은 대상 폴더의 ** 가능한 값 **이 될 수 있습니까? – sunbabaphu

답변

1

을!

<!-- goups all directories of the form "my_dist_folder-xx" --> 
<dirset id="dir_list" dir="${env.WORKSPACE}"> 
    <include name="my_dist_folder*"/> 
</dirset> 
<!-- generate path names of the above dirs and sort them --> 
<pathconvert property="dir_names_list" refid="dir_list" pathsep=","/> 
<sortlist property="sorted_names_list" value="${dir_names_list}" delimiter="," /> 
<!-- pick the last path-name (as it corresponds with the latest version-number directory) --> 
<propertyregex property="dist_folder" input="${sorted_names_list}" regexp=",?([^,]+)$" select="\1"/> 
<!-- use this "dist_folder" as "todir" in the copy task --> 
<copy todir="${dist_folder}" > 
    <fileset dir="${env.WORKSPACE}/my_src_folder"> 
     <exclude name="**/*.svn"/> 
    </fileset> 
</copy> 

질문에서, 이러한 모든 my_dist_folder-xx.. 폴더를 직접 것이라고 나타납니다,하지만 아래 근거리에있는 하위 디렉토리 ${env.WORKSPACE} ... 기반 디렉토리 내의 하위 디렉토리에있을 수있는 경우 <dirset> 작업에서 <include name="my_dist_folder*"/><include name="**/my_dist_folder*"/>으로 바꿉니다.

UPDATE : 당신은 항상 시스템에만 같은 폴더 my_dist_folder-xx..있을 거라고 확신하는 경우 또한, 당신은 제거 할 수 있습니다 다음과 같은 두 가지 라인 - <sortlist><propertyregexp><dirset> 생성하기 때문에 하나의 경로 이름이이므로 정렬/마지막 선택이 필요하지 않습니다. 따라서 <pathconvert> 속성을 사용하여 대상 폴더을 직접 설정할 수 있습니다. 예 :

<dirset id="dir_list" dir="${env.WORKSPACE}"> 
    <include name="my_dist_folder*"/> 
</dirset> 
<!-- generate path name of the above dir --> 
<pathconvert property="dir_names_list" refid="dir_list" pathsep=","/> 
<!-- use this "dir_names_list" as "todir" in the copy task --> 
<copy todir="${dir_names_list}" > 
    <fileset dir="${env.WORKSPACE}/my_src_folder"> 
     <exclude name="**/*.svn"/> 
    </fileset> 
</copy> 
관련 문제