2011-06-21 19 views
6

Dosya ve alt dizinleri, tek bir alt dizinden Ant'i kullanarak dizin yapısını ve içeriğini geri kalanını kopyalamaksızın kopyalamak istiyorum. Örneğin, dir_3, onun dosyalarını (file_1 - file_n) ve alt dizinleri (dir_4 ve dir_5) kopyalamak istiyorum, ancak dir_1 ve dir_2. Bunu yapmak için kullanabileceğim bir desen var mı?Ant - dosyaları bir ağaçtaki yalnızca bir alt dizinden kopyalama ve kopyalama

temp 
    \--dir_1 
    \--dir_2 
     | 
     \--dir_3 
      | 
      \--dir_4 
      \--dir_5 
      \-- file_1 
      | 
      \--file_n 

Teşekkürler.

cevap

16

...

<copy todir="${copy.dir}"> 
    <fileset dir="temp"> 
     <include name="**/dir3/**"/> 
    </fileset> 
</copy> 

include yönergesini kullandığınızda, yalnızca verdiğiniz modelle eşleşen dosyaları içerir. Bu durumda, sadece tam yol adında bir yerde /dir3/ olan dosyaları kopyayorum. Bu, dir3 altındaki alt dizinleri ve dir3 altındaki tüm dosyaları içerir.

Sen include direktifleri geçersiz kılmak için exclude direktifini kullanabilirsiniz:

<copy todir="${copy.dir}"> 
    <fileset dir="temp"> 
     <include name="**/dir3/**"/> 
     <exclude name="**/dir3/*"/> 
    </fileset> 
</copy> 

Bu dir3 kendisi altındaki dosyaları o alt dizinleri tüm alt dizinleri ve dosyaları kopyalamak, ama olmaz. * dizindeki tüm dosyalarla eşleşirken, ** tüm dizin ağacındaki tüm dosyalarla eşleşir.

Bu, bir dizin oluşturur temp/dir2/dir3.

<copy todir="${copy.dir}"> 
    <fileset dir="temp/dir2/dir3"/> 
</copy> 

temp altında doğrudan doğrudan dir3 altındaki tüm dosyaları bir dizine temp yaratacaksınız: Bunu yapmak

<copy todir="${copy.dir}"> 
    <fileset dir="temp/dir2"> 
     <include name="dir3/**"/> 
    </fileset> 
</copy> 

: Ben temp/dir3 istiyorsanız, ben dir3 ana dizinine benim fileset ayarlamak zorunda . Ayrıca bu dizinlerin altındaki tüm dosyaları (ve dizin ağaçlarını) içeren bir temp/dir4 ve temp/dir5 dizini olacaktır.

1
<copy todir="/some/path/foobar" verbose="true"> 
    <fileset dir="/some/path/temp/dir2" includes="**"/> 
</copy> 

sadece tüm dirs ve aşağıdaki dosyaları .. dahil dir2 itibaren fileset kullanmak

Eğer dir olduğunu eğer ayrıca = true yazmayı kullanmaya gerek olabilir kopyalanan tüm dosyaları yankı sadık = ayrıntılı aksi mevcut dosyaları kopyalama görevi ile yazılmaz,
nitelik zaten var todir tarafından belirtilen o kadar zor değil

İlgili konular