我们的自动测试会生成报告,原来的实现比较简单,就是删除32天前的那个目录,问题是可能某些天的build会失败,那么task不会被调用,这样可能保存的历史记录大于31了,偏离我们的目的了。查看了下ant的手册,发现有一个selector可以用,得到如下的内容:
<target name="backup-report">
<tstamp>
<format locale="en" property="deletedDir" pattern="MM/dd/yyyy hh:mm aa" offset="-32" />
</tstamp>
<tstamp>
<format property="thisDir" pattern="yyyy-MM-dd" />
</tstamp>
<mkdir dir="${reports-dir}/${thisDir}"/>
<copy todir="${reports-dir}/${thisDir}">
<fileset dir="${report-dir}">
<include name="**/*"/>
</fileset>
</copy>
<delete>
<fileset dir="${reports-dir}" includes="*">
<date datetime="${deletedDir}" when="before"/>
</fileset>
</delete>
</target>
问题是这个似乎不能删除目录,只有1.6.2以后才支持删除目录。
最终一个简单的方法就是在最开始就删除32天前的目录,这样就不会有太老的记录保留下来了。
发表评论