【发布时间】:2011-12-06 16:43:30
【问题描述】:
我有一个基本的 ant 脚本,我在其中将一组文件复制到任何目标之外的目录中。然后,我想在任何/所有目标运行后清理这些文件,而不管依赖关系如何。我遇到的主要问题是目标可以是“编译”或“部署战争”,所以我不能盲目地从“编译”中调用“清理”目标,因为接下来可能会调用“部署战争”。而且我不能盲目地从“部署战争”中调用,因为它可能不会被调用。如何定义在所有其他必要目标完成(失败或成功)后将被调用的目标?下面的“cleanUpLib”目标是我希望在所有/任何任务执行后调用的目标:
<project name="proto" basedir=".." default="deploywar">
...
<copy todir="${web.dir}/WEB-INF/lib">
<fileset dir="${web.dir}/WEB-INF/lib/common"/>
</copy>
<target name="compile">
<!-- Uses ${web.dir}/WEB-INF/lib -->
....
</target>
<target name="clean" description="Clean output directories">
<!-- Does not use ${web.dir}/WEB-INF/lib -->
....
</target>
<target name="deploywar" depends="compile">
<!-- Uses ${web.dir}/WEB-INF/lib -->
....
</target>
<target name="cleanUpLib">
<!-- Clean up temporary lib files. -->
<delete>
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
</delete>
</target>
【问题讨论】: