如何使用Ant将目录从一个位置复制到另一个位置?

时间:2010-09-09 15:26:35

标签: ant

我希望将目录从一个位置复制到另一个位置。但是,在查看“copy”和“copyDir”(不推荐使用)之后,默认情况下,Ant似乎只将一个位置的内容复制到另一个位置,而不是实际目录(以及其中的所有内容)。

因此,作为一个例子,我有以下内容:

./Foo/test.txt

我应用以下Ant:

 <copy todir="./build">
    <fileset dir="./Foo"/>
 </copy>

结果如下:

./build/test.txt

我希望它是:

./build/Foo/test.txt

希望这是有道理的。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

要保留结构,您需要复制父文件夹。复制命令中有一个展平选项,但默认为false。您也可以创建所需的目录结构,然后在文件级别直接复制到新文件夹中。

以下是reference

中的相关行
  

当&lt; fileset&gt;用于选择要复制的文件,       必须设置todir属性。文件是       位于&lt; fileset&gt;的基目录下       将被复制到目标下的目录       目录匹配相对于基础的路径       &lt; fileset&gt;的目录,除非展平   attribute设置为true。

问题在于你正在拿起Foo文件夹,所以你只得到下的文件,你需要选择Foo上面的文件夹来获取文件集〜/ Foo / file.txt结构存在。

答案 1 :(得分:3)

这个怎么样:

<copy todir="./build">
  <fileset dir=".">
    <include name="Foo/**"/> 
  </fileset>
</copy>