2

我正在编写一个速度宏,其中有一些蚂蚁任务。在速度宏的#foreach 循环中,我有一个路径转换任务:

#foreach(<iterate through something>)        
        <pathconvert property='filename' refid='swf.file'>
          <mapper>
            <chainedmapper>
                <flattenmapper/>
                <globmapper from='*-d.swf' to='*'/>
            </chainedmapper>
          </mapper>
        </pathconvert>
#end

我遇到的问题是“文件名”属性在第一次迭代期间只设置一次,因为 ANT 中的属性是不可变的。但我需要在每次迭代期间设置文件名。有没有办法做到这一点?

如果有办法重置属性,我可以在每次迭代结束时这样做。还是有更好的方法来做到这一点?任何帮助将不胜感激!

提前致谢,阿南德

4

4 回答 4

4

您可以使用 ant-contrib 的变量。它们的行为类似于可变属性。

http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html

于 2010-09-17T16:00:01.763 回答
3

使用 Ant 1.8 中新的词法范围属性:

“词法范围的本地属性,即仅在目标、顺序块或类似环境中定义的属性。”

公告。

Ant 中的属性被设计为不可变的,但它们屈服于大众需求并为我们提供了变量。您的替代方法是编写自定义任务(使用 Java 或动态语言),但这似乎是一个不错的折衷方案。

于 2010-09-17T18:37:15.323 回答
0

使用来自Ant Plugin Flaka的 for + let 任务的组合来覆盖现有属性。
在这里查看一些片段

于 2012-02-29T19:33:44.103 回答
0

下面的代码片段说明了一个我猜没有记录的 ant 属性。属性是不可变的,但引用是可变的。因此,任何没有名称但有引用的数据类型都是可变的。例如一个fileset. 但今天我找到了一种拥有可变属性的方法。与local任务或其他一些技巧相关联,它可能是在 ant 中使用变量的一种方式。

<property name="a" value="aaa" id="refa" />
<property name="b" refid="refa" />
<echo>${b}</echo>
<property name="c" value="ccc" id="refa" />
<property name="d" refid="refa" />
<echo>${d}</echo>

输出是:

aaa
ccc

尽管在这两种情况下refa都会打印参考。

这是一篇关于它的帖子。还有一个

于 2012-02-29T09:27:38.707 回答