使用条件在Ant中取消设置属性并在Ant中删除属性

时间:2012-05-17 22:45:51

标签: java ant

你如何取消蚂蚁的财产?所以这是作为一个属性完全删除?

<condition property="proguard.config" value="proguard.cfg">
      <isset property="proguarded"/>
</condition>


 <condition property="proguard.config" value="">
      <not>
      <isset property="proguarded"/>
      </not>
</condition>

这似乎有效。然而,即使存在proguard.config这样的属性,proguard也会运行。那么如何有条件地将proguard.config作为属性删除呢?我知道如果proguard看到.properties文件中存在proguard.config属性,它将会运行。

1 个答案:

答案 0 :(得分:9)

Ant manual Property Task州:

  

属性是不可变的:无论是谁设置属性,都会将其冻结为其余的构建;他们绝对不是变数。

话虽如此,有几个解决方法:

  1. Local Task - 给定范围内的本地属性“阴影”更高范围内同名的属性(在Macrodefs中特别有用)

  2. Ant-Contrib Variable Task - Ant-Contrib提供了灵活性,但它也增加了一个依赖项,有时会诱使您编写可能在Ant脚本或自定义Ant任务中更好地表达的过程Ant代码


  3. 在上面的示例中,如果在执行Ant项目期间属性proguarded没有更改,则无需取消设置该属性。例如,您可以按条件执行目标:

    <target name="proguarded-target" if="proguarded">
      ...
    </target>
    
    <target name="not-proguarded-target" unless="proguarded">
      ...
    </target>