我正在尝试使用Ant 1.6.5删除文件列表,但我必须提出一个条件,如果只存在文件删除它或者向用户抛出构建失败错误,我已经从下面剪断了论坛在这里,但当我在我的环境中相应地修改它不起作用。
<property name="file.list" value="test1.props,test2.props,test3.props"/>
<target name="file.missing" depends="validate.dir">
<echo message = " The Filelist is : ${file.list} "/>
<condition property="is.missing">
<resourcecount when="ne" count="0">
<difference id="is.missing">
<intersect>
<filelist id="required" dir="${target.location}" files="${file.list}"/>
<fileset id="existing" dir="${target.location}" includes="*.*"/>
</intersect>
<filelist refid="required"/>
</difference>
</resourcecount>
</condition>
<fail if="is.missing" message= " File ${toString:missing} is missing from the list of files provided for removing, please recheck and submit correct "/>
</target>
<target name = "clean" unless="is.missing" depends="file.missing">
<delete>
<fileset dir="${target.location}" includes = "${file.list}"/>
</delete>
</target>
我使用此代码收到编译时错误,错误是 类org.apache.tools.ant.taskdefs.ConditionTask不支持嵌套的“resourcecount”元素。
有人可以指导我这个
答案 0 :(得分:2)
<resourcecount>
是在Ant 1.7中引入的。
此外,在Ant 1.7之前,<difference>
和<intersect>
等资源集合也不可用。
答案 1 :(得分:1)
只需将delete task与嵌套文件集和属性一起使用failonerror =“true”就足够了。
<delete failonerror="true">
<fileset dir="some/path"/>
</delete>
如果目录不存在,您将获得BUILD FAILED
。