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>
超出目录“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>