Ant:在循环中使用多个名称模式进行删除

Ant: delete using several name paterns in a loop

超出目录“res” 我想删除名称出现在目录 "platforms/${patern.dir}/res" 中的所有文件,其中 pattern.dir 是参数 [ 指定的逗号分隔列表的成员=15=] 我想将其组织为一个循环,以便可以在不修改目标的情况下更改名称模式的目录数量。

这是应该执行的任务:

<taskdef resource="net/sf/antcontrib/antlib.xml"/>

<target name="-clean-irrelevant" if="pattern.dirs" >
    <for list="${pattern.dirs}" param="pattern.dir">
         <delete verbose="true">
            <fileset dir="res" includes="**/*" >
                <present present="srconly"
                 targetdir="platforms/${pattern.dir}/res"/>     
            </fileset>  
        </delete>    
    </for>
</target>

当我运行任务时,我收到消息

The following error occurred while executing this line:
for doesn't support the nested "delete" element.

尝试了 foreach,也尝试了独立删除任务的 antcall - 没有成功。

有没有实现任务的方法?

您需要在 for 循环之后放置一个 sequential 元素,其中应包含每次迭代要 运行 的任务。

要访问列表参数 pattern.dir,您需要使用 @{} 而不是 ${}

<target name="-clean-irrelevant" if="pattern.dirs" >
    <for list="${pattern.dirs}" param="pattern.dir">
        <sequential>
            <delete verbose="true">
                <fileset dir="res" includes="**/*" >
                    <present present="srconly"
                       targetdir="platforms/@{pattern.dir}/res"/>     
                </fileset>  
            </delete> 
        </sequential>           
    </for>
</target>