首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Ant中的每个<macrodef>调用<path>中的每个<pathelement>

为Ant中的每个<macrodef>调用<path>中的每个<pathelement>
EN

Stack Overflow用户
提问于 2016-11-02 13:33:34
回答 1查看 1.1K关注 0票数 0

我有一个path如下所示:

代码语言:javascript
复制
<path refid="myjarlocation"/>

现在,我想迭代这个路径,对于路径中的每个值,我想调用一个宏,该值作为marcodef中要使用的属性之一。

在目标情况下,我们可以很容易地做到以下几点:

代码语言:javascript
复制
<foreach target="mytarget" param="jarloc">
    <path refid="myjarlocation"/>
</foreach>

因为我需要传递多个参数,所以我不能使用每个参数,所以我使用的是宏。因此,如何在路径上迭代,调用宏and而不是目标,是一个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 15:06:39

通过使用ant-cont肋骨的for任务迭代路径并将path元素传递给宏,我做了一些类似的工作。

在您的项目中先获得ant-cont肋骨-请参阅http://ant-contrib.sourceforge.net/

接下来,在ant中定义您的宏define,不管您想要包含哪些属性,这些属性将接受path元素。例:

代码语言:javascript
复制
<macrodef name="awesome-macro">
    <attribute name="path-to-deal-with"/>
    <attribute name="unrelated-attribute"/>
    <sequential>
        ...
    </sequential>
</macrodef>

然后,使用for任务将路径迭代到路径元素中,并调用宏:

代码语言:javascript
复制
<for param="path.element">
    <fileset dir="${jars.dir}">
        <include name="*.jar"/>
    </fileset>
    <sequential>
        <awesome-macro path-to-deal-with="@{path.element}" unrelated-attribute="whatever"/>
    </sequential>
</for>

注意在for循环中使用@{path.element}而不是${path.element}来引用循环参数!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40381282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档