我们的自动测试会生成报告,原来的实现比较简单,就是删除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天前的目录,这样就不会有太老的记录保留下来了。

(Visited 130 times, 1 visits today)