Я використовував copydir
для копіювання дерево каталогів, але воно застаріле. Мій каталог містить деякі підкаталоги, а деякі містять файли, а інші містять більше підкаталогів.
Як можна скопіювати все дерево?
Я використовував copydir
для копіювання дерево каталогів, але воно застаріле. Мій каталог містить деякі підкаталоги, а деякі містять файли, а інші містять більше підкаталогів.
Як можна скопіювати все дерево?
Відповіді:
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**"/>
</copy>
віримо, що зробиш те, що хочеш ... (виконана рекурсивна копія)
includes
не потрібно, коли все хочеться (див. відповідь користувача s1n )
Скопіюйте вміст, включаючи сам каталог.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}">
<include name="${src.dir}/**"/>
</fileset>
</copy>
Примітка: $ {src.dir} відносно $ {src.dir.parent}, а не повний шлях
x.parent
передбачається, НЕ БУДЬТЕ parent
з x
... -_-
Вам слід лише вказати каталог (не містить властивість include):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
Детальнішу інформацію та приклади див. У посібнику .
Скопіюйте вміст, включаючи сам каталог.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
Тонкий момент: мураш копіюватиме підкаталоги лише у тому випадку, якщо вихідні файли новіші за цільові файли. [1] У моєму випадку підручники не копіювалися (я використовую verbose = "вірно"), оскільки не було змін, і вони вже були в пункті призначення. Ви можете використовувати "перезаписати", щоб примусити його, або торкнутися деяких файлів у вихідних підкаталогах.
Я використовував теги, як показано на фрагменті коду нижче, в моєму файлі build.xml, щоб скопіювати окремі файли jar всередині каталогу.
<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>
З прикладу тут можна написати простий Ant - файл з допомогою завдання копіювання.
<project name="MyProject" default="copy" basedir=".">
<target name="copy">
<copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
</project>
Це має скопіювати все, що знаходиться всередині src_dir
(виключаючи це), на new/dir
.
Ще одне мурашине завдання - Copydir . Ключова частина тут - включити ім'я каталогу, який ви хочете скопіювати, після каталогу dest. Підкаталоги та файли будуть скопійовані автоматично.
<target name="-post-jar">
<copydir src="config" dest="${dist.dir}/config/"/>
</target>
Цей код повинен копіювати папку, а також її вміст. Він також використовує завдання базового імені, щоб уникнути необхідності будь-якого ручного розбору шляху.
<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>
Я нарешті скопіював за допомогою наступного коду
<copy todir="${root.dir}/dist/src">
<fileset dir="${root.dir}/build/src" includes="**"/>
</copy>
Це скопіює папку src з dist для збирання.
Сподіваюся, що це комусь допоможе.