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 中执行此操作吗?

4

1 回答 1

0

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

属性是不可变的:首先设置属性的人会在接下来的构建中冻结它;它们绝对不是变量。

虽然有几件事你可以用来实现你想要的。首先是 Ant<local>任务,它允许您拥有一个目标本地属性的实例,该实例具有与目标外部不同的值。但是看看你的问题的细节,你似乎想要一个变量而不是一个属性——你想要随意改变这个值。由于您已经在使用 ant-contrib,为什么不使用 a<var>呢?Ant-contrib 变量是可变的,在大多数情况下,可以直接使用来代替 Ant 属性。

于 2013-03-29T13:05:30.083 回答