使用Ant,我想复制一些顶级目录的子目录,但顶级目录的名称可以更改,所以我需要Ant以编程方式确定要复制的目录。
换句话说,给定下面的示例目录结构,将每个./<projectX>/bin
目录的内容复制到./bin
。
bin
project1
\-- bin
\-- com
\-- name
\-- dir1
\-- file1.class
\-- file2.class
\-- file3.class
\-- dir2
\-- file4.class
\-- file5.class
project2
\-- bin
\-- com
\-- name
\-- dir3
\-- file6.class
\-- file7.class
\-- file8.class
project3
\-- bin
\-- com
\-- name
\-- dir4
\-- file9.class
\-- dir5
\-- file10.class
\-- file11.class
最终结果将是一个bin目录,如下所示:
bin
\-- com
\-- name
\-- dir1
\-- file1.class
\-- file2.class
\-- file3.class
\-- dir2
\-- file4.class
\-- file5.class
\-- dir3
\-- file6.class
\-- file7.class
\-- file8.class
\-- dir4
\-- file9.class
\-- dir5
\-- file10.class
\-- file11.class
我试过
<copy todir="${basedir}/bin">
<fileset dir="${basedir}">
<include name="**/bin/*"/>
<exclude name="bin"/>
</fileset>
</copy>
但包括顶级bin目录下的projectX/bin
目录。
答案 0 :(得分:2)
您可以使用mapper从源生成目标路径,例如:
<copy todir="${basedir}/bin">
<fileset dir="${basedir}">
<include name="*/bin/**"/>
</fileset>
<regexpmapper from=".*/bin/(.*)" to="\1" />
</copy>