如何重命名目录有很多答案,但它们都需要知道确切的目录名称。就我而言,名称是动态生成的。我想做这样的事情,但由于我不能通配源代码目录,因此失败了:
<copy todir="./some/runtime/directory/mydir">
<fileset dir="some/build/dir/mydir*"/> <!-- name is mydir_<timestamp> -->
</copy>
在bash中,我可以mv some/build/dir/mydir* some/runtime/dir/mydir
。我正在尝试找到等效的蚂蚁命令。
答案 0 :(得分:1)
如果它足以复制目录内容,那么只需清理你的构建文件夹,就可以试试这个:
<copy todir="./some/runtime/directory/mydir">
<fileset dir="some/build/dir">
<include name="**/mydir*/**/*" /> <!-- or just mydir/**/* -->
</fileset>
</copy>
答案 1 :(得分:1)
我首先创建了一个属性,然后复制了它: -
<dirset id="my-dir-set"
dir="some/build/dir" includes="mydir*"/>
<property name="my-dir-name" refid="my-dir-set" />
<fail message="Must have exactly one directory - ${my-dir-name}">
<condition>
<resourcecount refid="my-dir-set" count="1" when="ne" />
</condition>
</fail>
<move file="${my-dir-name}"
tofile="./some/runtime/directory/mydir" />
但是,如果你能保证dirset在没有测试的情况下是独一无二的: -
<move tofile="./some/runtime/directory/mydir">
<dirset dir="some/build/dir" includes="mydir*" />
</move>
答案 2 :(得分:0)
我对同样的问题之以鼻。在没有找到答案的情况下,由于总是复制动态目录名称,因此我来到了此解决方案:
<copy todir="some/runtime/directory/myTargetDir">
<fileset dir="some/build/dir" includes="mySourceDir_*/**/*"/>
<cutdirsmapper dirs="1"/>
</copy>
这会将
(已通过Ant 1.10.9测试。)