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

简短的回答是不可以,因为Ant属性是不可变的。属性一旦有了值,就不能再修改了。引用自文档:

属性是不可变的:谁先设置一个属性,谁就冻结它其余的构建;它们绝对不是变量。

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

相关内容

  • 没有找到相关文章

最新更新