更改Ant中两个目标中变量的值

时间:2013-03-29 12:19:41

标签: ant

我有一个目标:

<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中这样做吗?

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的,你不能这样做,因为Ant properties are immutable。一旦属性具有值,就无法更改。引用文档:

  

属性是不可变的:任何设置属性的人都会将其冻结   其余的构建;他们绝对不是变数。

虽然有一些事情可以用来实现你想要的东西。 首先是Ant <local> task,它允许您为目标提供本地属性的实例,其值与目标之外的值不同。但是看一下你问题的具体细节,你似乎想要一个变量而不是一个属性 - 你希望随意改变这个值。由于您已经在使用ant-contrib,为什么不使用<var>? Ant-contrib变量是可变的,在大多数情况下,可以直接用于代替Ant属性。