我使用过copydir
来复制一个目录树,但是它已经被弃用了。我的目录包含一些子目录,其中有的包含文件,有的包含更多的子目录。
我该如何复制整个树?
复制包括目录本身在内的所有内容。
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}">
<include name="${src.dir}/**"/>
</fileset>
</copy>
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**"/>
</copy>
我相信这将实现你想要的...(递归复制完成)
includes
并不是必需的。 - Abel你只需要指定目录(不包括includes属性):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
查看手册以获取更多详细信息和示例。
复制包括目录本身在内的所有内容。
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
<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">
<b><copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy></b>
</target>
</project>
这个命令会将src_dir
中的所有内容(但不包括它本身)复制到new/dir
目录中。
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**/*"/>
</copy>
<target name="-post-jar">
<copydir src="config" dest="${dist.dir}/config/"/>
</target>
这段代码应该复制文件夹及其内容。它还使用basename任务来避免手动路径解析。
<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>