Я использовал 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
... -_-
Вам нужно только указать каталог (без свойства includes):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
Смотрите руководство для более подробной информации и примеров.
Скопируйте содержимое, включая сам каталог.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
Замечание: ant будет копировать подкаталоги только в том случае, если исходные файлы новее, чем файлы назначения. [1] В моем случае подкаталоги не копировались (я использую verbose = "true"), так как изменений не было и они уже были в месте назначения. Вы можете использовать "перезапись", чтобы заставить его, или коснуться некоторых файлов в ваших исходных подкаталогах.
Я использовал теги include, как показано во фрагменте кода ниже в моем файле 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
.
Я добавляю более общий шаблон для копирования всех вложенных папок.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**/*"/>
</copy>
См. Подробности в шаблонах .
Еще одна задача для муравьев - Copydir . Ключевой частью здесь является включение имени каталога, который вы хотите скопировать, после каталога назначения. Подкаталоги и файлы будут скопированы автоматически.
<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 в build.
Надеюсь, это кому-то поможет.