2013-03-29 68 views
2

我有一个目标:更改变量的值两项指标在蚂蚁

<target name="add_inner_class" > 
    <property name="client.jar.classes" 
       value="${client.class.jar.package.list}"/> 
    <foreach list="${client.class.jar.package.list}" 
      target="add_inner_class_list" param="outer_class" 
      delimiter=" " inheritall="true" /> 
</target> 

这一目标要求的第二目标"add_inner_class_list"

在第二个目标中,我想更新调用目标中定义的属性(即名为client.jar.classes的属性)。 在每次调用中,我希望此值能够保持并在需要时进行更新。

我想知道,我可以在Ant中做到吗?

回答

0

简短的回答是否定的,你不能这样做,因为蚂蚁properties are immutable。一旦财产有价值,它就不能改变。从文档引用:

属性是不可变的:任何设置属性的人先冻结它的 构建的其余部分;他们绝对不是变数。

虽然您可能可以使用一些方法来实现自己想要的功能。 首先是Ant <local> task,它允许您为目标具有本地属性的实例,其值与目标外部的值不同。但看看你的问题的具体情况,看起来你想要的是一个变量而不是一个属性 - 你想要随意更改这个值。由于您已经在使用ant-contrib,为什么不使用<var>? Ant-contrib变量是可变的,并且在大多数情况下,可以直接用于Ant属性。