如果文件集排除为空,则 ANT 删除失败
ANT delete fails if fileset exclude is empty
如果目录包含 FOO.xml 或 BAR.xml(或两者),此 ANT 删除任务将完美运行,但如果它们不存在,则不会 return 成功。
<delete includeemptydirs="true" followsymlinks="false">
<fileset dir="${apache.base}" erroronmissingdir="false">
<include name="**/*"/>
<exclude name="**/FOO.xml **/BAR.xml"/>
</fileset>
</delete>
有没有一种方法可以让它工作而不管文件集的排除部分是否为空?
您的排除模式包含不正确的语法。当使用嵌套的 include
或 exclude
元素时,需要单独列出文件名模式,例如:
<delete includeemptydirs="true" followsymlinks="false">
<fileset dir="${apache.base}" erroronmissingdir="false">
<exclude name="**/FOO.xml"/>
<exclude name="**/BAR.xml"/>
<include name="**/*"/>
</fileset>
</delete>
但是,如果您使用 fileset
的 includes
或 excludes
属性,comma-delimited 列表将实际起作用;
<delete includeemptydirs="true" followsymlinks="false">
<fileset
dir="${apache.base}"
includes="**/*"
excludes="**/FOO.xml,**/BAR.xml"
/>
</delete>
如果目录包含 FOO.xml 或 BAR.xml(或两者),此 ANT 删除任务将完美运行,但如果它们不存在,则不会 return 成功。
<delete includeemptydirs="true" followsymlinks="false">
<fileset dir="${apache.base}" erroronmissingdir="false">
<include name="**/*"/>
<exclude name="**/FOO.xml **/BAR.xml"/>
</fileset>
</delete>
有没有一种方法可以让它工作而不管文件集的排除部分是否为空?
您的排除模式包含不正确的语法。当使用嵌套的 include
或 exclude
元素时,需要单独列出文件名模式,例如:
<delete includeemptydirs="true" followsymlinks="false">
<fileset dir="${apache.base}" erroronmissingdir="false">
<exclude name="**/FOO.xml"/>
<exclude name="**/BAR.xml"/>
<include name="**/*"/>
</fileset>
</delete>
但是,如果您使用 fileset
的 includes
或 excludes
属性,comma-delimited 列表将实际起作用;
<delete includeemptydirs="true" followsymlinks="false">
<fileset
dir="${apache.base}"
includes="**/*"
excludes="**/FOO.xml,**/BAR.xml"
/>
</delete>