copydir
Bir dizin ağacını kopyalamak için kullandım , ancak kullanımdan kaldırıldı. Dizinim bazı alt dizinler içerir ve bunlardan bazıları dosyalar içerirken diğerleri daha fazla alt dizin içerir.
Ağacın tamamını nasıl kopyalayabilirim?
copydir
Bir dizin ağacını kopyalamak için kullandım , ancak kullanımdan kaldırıldı. Dizinim bazı alt dizinler içerir ve bunlardan bazıları dosyalar içerirken diğerleri daha fazla alt dizin içerir.
Ağacın tamamını nasıl kopyalayabilirim?
Yanıtlar:
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**"/>
</copy>
bunun istediğinizi yapacağına inanın ... (Özyinelemeli kopyalama yapıldı)
includes
her şeyi istediğinizde gerekli değildir (kullanıcı s1n'nin cevabına bakın )
Dizinin kendisi dahil içeriği kopyalayın.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}">
<include name="${src.dir}/**"/>
</fileset>
</copy>
Not: $ {src.dir}, tam yol değil, $ {src.dir.parent} ile ilişkilidir
x.parent
OLMAYACAKTIR gerekiyordu parent
arasında x
... -_-
Yalnızca dizini belirtmeniz gerekir (içerir özelliği sans):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
Daha fazla ayrıntı ve örnek için kılavuza bakın .
Dizinin kendisi dahil içeriği kopyalayın.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
İnce bir nokta: ant, alt dizinleri yalnızca kaynak dosyalar hedef dosyalardan daha yeniyse kopyalayacaktır. [1] Benim durumumda, alt dizinler kopyalanmıyordu (ben verbose = "true" kullanıyorum), çünkü hiçbir değişiklik yapılmamıştı ve zaten hedefte bulunuyorlardı. Zorlamak için "üzerine yaz" seçeneğini kullanabilir veya kaynak alt dizinlerinizdeki dosyalardan bazılarına dokunabilirsiniz.
Bir dizinin içine tek tek jar dosyalarını kopyalamak için build.xml dosyamda aşağıdaki kod parçacığında gösterildiği gibi include etiketleri kullandım.
<target name="devInstall" depends="generateXsl" description="testing">
<copy flatten="true" todir="${test}/WEB-INF/lib" overwrite="${overwrite}">
<fileset refid="buildJars"/>
<fileset dir="lib">
<include name="commons-collections-*.jar"/>
<include name="commons-io-*.jar"/>
<include name="kodo/*.jar"/>
<include name="mail*.jar"/>
<include name="activation*.jar"/>
<include name="guava*.jar"/>
<include name="jna*.jar"/>
</fileset>
</copy>
</target>
Buradaki örnekten , kopyalama görevini kullanarak basit bir Ant dosyası yazabilirsiniz.
<project name="MyProject" default="copy" basedir=".">
<target name="copy">
<copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
</project>
Bu, içindeki her şeyi src_dir
(hariç) klasörüne kopyalamalıdır new/dir
.
Başka bir karınca görevi Copydir'dir . Buradaki anahtar kısım, kopyalamak istediğiniz dizinin adını hedef dizinden sonra eklemektir. Alt dizinler ve dosyalar otomatik olarak kopyalanacaktır.
<target name="-post-jar">
<copydir src="config" dest="${dist.dir}/config/"/>
</target>
Bu kod, klasörü ve içeriğini kopyalamalıdır. Ayrıca herhangi bir manuel yol ayrıştırma yapmak zorunda kalmamak için basename görevini kullanır.
<project name="Build" default="doCopy">
<property name="source.dir" value="SourceDirPathGoesHere"/>
<property name="dest.dir" value="DestinationDirPathGoesHere"/>
<target name="doCopy">
<basename property="source.dir.base.name" file="${source.dir}"/>
<copy todir="${dest.dir}">
<fileset dir="${source.dir}/.." includes="${source.dir.base.name}/**"/>
</copy>
</target>
</project>
Sonunda aşağıdaki kodu kullanarak kopyaladım
<copy todir="${root.dir}/dist/src">
<fileset dir="${root.dir}/build/src" includes="**"/>
</copy>
Bu src klasörünü dist'den derlemeye kopyalayacaktır.
Umarım bu birine yardımcı olur.