ant - 如何在 <macrodef> 中进行 <foreach>?

标签 ant ant-contrib macrodef

我有一个如下所示的 xml:

<data>

    <foo>value1</foo>

    <foo>value2</foo>

    <foo>value3</foo>

  </data>

我想创建实现以下功能的宏定义:
<?xml version="1.0"?>
<project name="OATS" default="execute" basedir=".">

  <xmlproperty file="data.xml" collapseAttributes="true"/>
  <target name="execute">
    <foreach list="${data.foo}" target="runScript" param="script"/>
  </target>
  <target name="runScript">
    <echo>Doing things with ${script}</echo>
  </target>
</project>

有人知道怎么做吗?提前致谢。

最佳答案

xmltask是 Ant 社区中为此目的的最佳选择,您不必定义自己的 macrodef。

例如:

  <tools:xmltask source="data.xml" report="false" >
    <tools:call path="data/foo">
      <param name="value" path="text()"/>
      <actions>
          <echo>Doing things with @{value}</echo>
      </actions>
    </tools:call>
  </tools:xmltask>

我鼓励你阅读用户手册,因为 xmltask 有很多选项。它基本上支持 XPath 来提取和迭代 xml 的任何部分。除了匿名代码块之外,它还支持对现有目标的调用(如示例中所示)。

这很难被击败。

关于ant - 如何在 <macrodef> 中进行 <foreach>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14457360/

相关文章:

ant - 我可以使Ant复制任务特定于操作系统吗?

android - 如何在 Linux 上构建适用于 Android 的 MuPDF

android - ant 如何禁用 pre-dexing r21+

ant - 如何使用参数在 cumstom ant 任务中调用 macrodef?

java - macrodef 上的 Ant 'unless'

java - 获取 Ant 元素中保存的值

bash - 如何通过 bash 脚本检测来自 ant/maven 的构建错误?

ant - 使用 ANT 检查多个文件是否存在

java - 在 Ant Java 任务中从带有空格分隔符的字符串程序生成 <arg/> 标签

java - 从属性文件创建 Ant 本地属性