2010-05-06 184 views
3

僅使用Ant,我想複製一些頂級目錄的子目錄,但頂級目錄的名稱可以更改,因此我需要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目錄,看起來像這樣:

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 

我已經試過

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

但包括projectX/bin目錄頂級下方bin目錄。

回答

2

可以使用mapper生成來自源的目標路徑,例如:

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

輝煌!從來不會自己拿出這個。有一點需要注意,我在Windows上,所以我需要將'handledirsep =「true」'屬性添加到任務中。謝謝。 – Scrubbie 2010-05-07 04:24:11

相關問題