尝试仅移动/重命名目录,而不是其所有内容。像这样:
<target name="rename_folder_jet" depends="Upload_on_ftp">
<move file="${build.dir}" todir="${build.dir}_jet_${ver_number}"/>
</target>
并且在开始之前确保目标目录不存在。
我尝试用下面的生成文件:
<project default="rename_folder_jet">
<property name="build.dir" value="build"/>
<property name="ver_number" value="0.3"/>
<target name="setup">
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.dir}/foo"/>
<mkdir dir="${build.dir}/bar"/>
</target>
<target name="teardown">
<delete dir="${build.dir}_jet_${ver_number}"/>
</target>
<target name="rename_folder_jet">
<move file="${build.dir}" todir="${build.dir}_jet_${ver_number}"/>
</target>
</project>
在调试(蚂蚁-d)执行Ant和上面很有趣。
案例1:
ant teardown
ant setup
ant -d
在这种情况下,此举的目标目录/重命名不存在。蚂蚁的调试输出显示:
[move] Attempting to rename dir: C:\Users\sudocode\tmp\ant\build to C:\Users\sudocode\tmp\ant\build_jet_0.3\build
情况2:
ant setup
ant
ant setup
ant -d
在这种情况下,目标目录已经存在于第二执行。蚂蚁的调试输出显示:
[move] Attempting to rename dir: C:\Users\sudocode\tmp\ant\build to C:\Users\sudocode\tmp\ant\build_jet_0.3\build
fileset: Setup scanner in dir C:\Users\sudocode\tmp\ant\build with patternSet{ includes: [] excludes: [] }
[move] Deleting directory C:\Users\sudocode\tmp\ant\build\foo
[move] Deleting directory C:\Users\sudocode\tmp\ant\build\bar
[move] Deleting directory C:\Users\sudocode\tmp\ant\build
如此看来,如果目标目录不存在,蚂蚁会做重命名的目录。但是,如果目标目录存在,它将复制到目录中,而不是从源目录中删除。
非常感谢sudocode – picnic4u 2011-04-29 09:43:25
对我来说,这是在指定的todir目录内移动整个目录,即使目录不存在。我通过使用tofile而不是todir来修复 – Josejulio 2017-04-05 16:29:21