ANT中的Property任务可以建立一个属性,但属性并不是变量 ,一旦分配值以后对于构建工程来讲就是不可改变的。也就是说,如果在构建文件中出现:
<property name="name" value="Sally"/>
<property name="name" value="Amy"/>
然后输出name的值会显示Sally而非Amy。如果在程序中使用API访问ANT情况就有所不同,首先在程序中通过setProperty设置的属性值会覆盖在构建文件中通过Property任务定义的同名属性。其次在程序中如果对同一个属性多次使用setProperty则后设置的值会覆盖先设置的值。有意思的是一旦调用了executeTarget后,属性的值就固定下来了,再通过setProperty设置的值将不会有效,但新的值通过getProperty仍然可以读到。这意味着我们可以通过API改变属性的值,但只要执行了某个target后这种改变在ANT的输出中无法体现。