foreach中的antcall不执行循环

时间:2013-05-20 10:50:38

标签: ant ant-contrib

我想通过使用ant脚本基于.composites来构建几个项目。 我在build.xml文件中添加了所有的taskref标签,lib路径。 我为此写了下面的代码,我收到了错误 foreach不支持嵌套的“antcall”元素。

<target name="createApplicationDAA">
<foreach param="program">
    <path>
        <fileset dir="${soaProjectName}/Composites" includes="**/*.composite"/>
    </path>
    <antcall target="createDAA"/>
</foreach>
</target>
<target name="createDAA">
..........
....
</target>

显然, 我的要求是通过在ant脚本中使用foreach或for循环构建所有组合来创建所有DAA。 任何人都可以告诉我,我在哪里做错了?

1 个答案:

答案 0 :(得分:4)

foreach不使用嵌套元素来确定要运行的内容,它需要target属性:

<target name="createApplicationDAA">
  <foreach param="program" target="createDAA">
    <path>
      <fileset dir="${soaProjectName}/Composites" includes="**/*.composite"/>
    </path>
  </foreach>
</target>
<target name="createDAA">
  <echo>${program}</echo>
</target>

或者,使用<for>,它采用嵌套的<sequential>

<target name="createApplicationDAA">
  <for param="program">
    <path>
      <fileset dir="${soaProjectName}/Composites" includes="**/*.composite"/>
    </path>
    <sequential>
      <echo>@{program}</echo>
    </sequential>
  </for>
</target>