[英]How to reset a property in ANT?
我正在编写一个速度宏,其中有一些蚂蚁任务。 在速度宏的#foreach循环中,我有一个pathconvert任务:
#foreach(<iterate through something>)
<pathconvert property='filename' refid='swf.file'>
<mapper>
<chainedmapper>
<flattenmapper/>
<globmapper from='*-d.swf' to='*'/>
</chainedmapper>
</mapper>
</pathconvert>
#end
我的问题是,由于ANT中的属性是不可变的,因此在第一次迭代期间,“ filename”属性仅设置了一次。 但是我需要在每次迭代期间设置文件名。 有办法完成这项工作吗?
如果有一种方法可以重置该属性,则可以在每次迭代结束时执行此操作。 还是有更好的方法来做到这一点? 任何帮助将非常感谢!
在此先感谢,阿南德
您可以使用ant-contrib的变量。 它们的行为就像可变属性。
http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html
在Ant 1.8中使用新的词法范围属性:
“按词法定义的局部属性,即仅在目标,顺序块或类似环境中定义的属性。”
Ant中的属性设计为不可变的,但它们满足了大众的需求并为我们提供了变量。 您的替代方法是编写一个自定义任务(使用Java或动态语言),但这似乎是一个不错的折衷方案。
以下代码段说明了一个蚂蚁属性,我猜它没有记录。 属性是不可变的,但引用是可变的 。 因此,没有名称但有引用的任何数据类型都是可变的。 例如一个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
会打印参考refa
。
使用Ant Plugin Flaka中的for + let任务的组合来覆盖现有属性。
在此处查看一些摘要 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.