2010-05-06 3 views
3

Ant를 사용하여 일부 최상위 디렉토리의 하위 디렉토리를 복사하려고하지만 최상위 디렉토리의 이름이 변경되어 프로그램 할 수있는 디렉토리를 결정해야합니다.여러 개의 이름이 지정되지 않은 디렉토리의 서브 디렉토리를 복사하는 방법

즉, 아래의 샘플 디렉토리 구조가 주어진 경우 각 ./<projectX>/bin 디렉토리의 내용을 ./bin으로 복사하십시오.

bin 
project1 
    \-- bin 
     \-- com 
      \-- name 
        \-- dir1 
         \-- file1.class 
         \-- file2.class 
         \-- file3.class 
        \-- dir2 
         \-- file4.class 
         \-- file5.class 
project2 
    \-- bin 
     \-- com 
      \-- name 
        \-- dir3 
         \-- file6.class 
         \-- file7.class 
         \-- file8.class 
project3 
    \-- bin 
     \-- com 
      \-- name 
        \-- dir4 
         \-- file9.class 
        \-- dir5 
         \-- file10.class 
         \-- file11.class 

그리고 최종 결과는 다음과 같이 보이는 bin 디렉토리 것 : 나는

<copy todir="${basedir}/bin"> 
     <fileset dir="${basedir}"> 
      <include name="**/bin/*"/> 
      <exclude name="bin"/> 
     </fileset> 
    </copy> 

을 시도했습니다

bin 
    \-- com 
     \-- name 
      \-- dir1 
        \-- file1.class 
        \-- file2.class 
        \-- file3.class 
      \-- dir2 
        \-- file4.class 
        \-- file5.class 
      \-- dir3 
        \-- file6.class 
        \-- file7.class 
        \-- file8.class 
      \-- dir4 
        \-- file9.class 
      \-- dir5 
        \-- file10.class 
        \-- file11.class 

하지만 최상위 아래 projectX/bin 디렉토리를 포함 bin 디렉토리에 있습니다.

답변

2

당신은 예를 들어, 소스에서 대상 경로를 생성하는 mapper를 사용할 수 있습니다

<copy todir="${basedir}/bin"> 
    <fileset dir="${basedir}"> 
     <include name="*/bin/**"/> 
    </fileset> 
    <regexpmapper from=".*/bin/(.*)" to="\1" /> 
</copy> 
+0

브릴리언트을! 혼자서 이걸 생각해 내지 못했을거야. 한가지주의 할 점은, 필자는 Windows에서 'regexpmapper> 작업에'processedirsep = "true"특성을 추가해야했습니다. 고맙습니다. – Scrubbie

관련 문제