【问题标题】:Unsetting Property in Ant and Removing Property in Ant using a condition使用条件取消设置 Ant 中的属性和删除 Ant 中的属性
【发布时间】:2012-05-17 22:45:50
【问题描述】:

如何在 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 属性,它就会运行。

【问题讨论】:

    标签: java ant


    【解决方案1】:

    Ant manual Property Task 声明:

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

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

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

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


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

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

    【讨论】:

      猜你喜欢
      • 2015-01-11
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 2019-05-25
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      相关资源
      最近更新 更多