如何在ANT中重置属性?

如何在ANT中重置属性?,ant,properties,velocity,reset,Ant,Properties,Velocity,Reset,我正在写一个velocity宏,其中有一些ant任务。在velocity宏的#foreach循环中,我有一个pathconvert任务: #foreach(<iterate through something>) <pathconvert property='filename' refid='swf.file'> <mapper> <chainedmapper>

我正在写一个velocity宏,其中有一些ant任务。在velocity宏的#foreach循环中,我有一个pathconvert任务:

#foreach(<iterate through something>)        
        <pathconvert property='filename' refid='swf.file'>
          <mapper>
            <chainedmapper>
                <flattenmapper/>
                <globmapper from='*-d.swf' to='*'/>
            </chainedmapper>
          </mapper>
        </pathconvert>
#end
#foreach()
#结束
我遇到的问题是,在第一次迭代中,“filename”属性只设置了一次,因为ANT中的属性是不可变的。 但是我需要在每次迭代中设置文件名。有没有办法做到这一点

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

提前感谢,,
Anand

您可以使用ant contrib的变量。它们的行为就像可变属性


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

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


Ant中的属性被设计成是不可变的,但它们屈服于流行的需求,给了我们变量。您可以选择编写一个自定义任务(用Java或动态语言),但这似乎是一个很好的折衷方案。

下面的代码片段演示了一个ant属性,我想它没有文档记录属性是不可变的,但引用是可变的。因此,任何没有名称,只有引用的数据类型都是可变的。例如,
文件集
。但今天我找到了一种方法,可以得到一种可变的属性。与
local
task或其他一些技巧相连接,这可能是在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>
尽管在这两种情况下都会打印参考
refa


这是。和。

使用for+let task from组合覆盖现有属性。
请参阅。

是的,这是我使用的(我也怀疑其他很多人),还提供了if、try catch、for循环等功能
aaa
ccc