ANT delete fails if fileset exclude is empty

305 Views Asked by At

This ANT delete task functions perfectly if the directory contains either FOO.xml or BAR.xml (or both), but will not return successfully if they do not exist.

<delete includeemptydirs="true" followsymlinks="false">
    <fileset dir="${apache.base}" erroronmissingdir="false">
        <include name="**/*"/>
        <exclude name="**/FOO.xml **/BAR.xml"/>
     </fileset>
</delete>  

Is there a way I could have it work regardless of whether the exclude section of the fileset is empty or not?

1

There are 1 best solutions below

4
CAustin On BEST ANSWER

Your exclude pattern contains incorrect syntax. When using nested include or exclude elements, file name patterns need to be listed separately, as such:

<delete includeemptydirs="true" followsymlinks="false">
    <fileset dir="${apache.base}" erroronmissingdir="false">
        <exclude name="**/FOO.xml"/>
        <exclude name="**/BAR.xml"/>
        <include name="**/*"/>
    </fileset>
</delete>

However, if you use fileset's includes or excludes attributes, a comma-delimited list will actually work;

<delete includeemptydirs="true" followsymlinks="false">
    <fileset
        dir="${apache.base}"
        includes="**/*"
        excludes="**/FOO.xml,**/BAR.xml"
    />
</delete>