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

时间:2015-02-15 06:18:30

标签: loops ant ant-contrib

目录之外“res”我想删除名称显示在目录"platforms/${patern.dir}/res"中的所有文件,其中pattern.dir是参数{{1}指定的逗号分隔列表的成员我想把它组织成一个循环,这样就可以在没有目标修改的情况下更改名称模式的目录数。

这是应该做的任务:

pattern.dirs

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

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

尝试了foreach,也是一个独立删除任务的蚂蚁 - 没有运气。

有没有办法实现这项任务?

1 个答案:

答案 0 :(得分:0)

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

要访问列表参数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>