在Ant中,只有文件列表存在时才删除它们

时间:2014-03-13 08:23:48

标签: ant

我正在尝试使用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”元素。

有人可以指导我这个

2 个答案:

答案 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