【问题标题】:Ant and the available task - what if something is not available?Ant 和可用任务 - 如果某些东西不可用怎么办?
【发布时间】:2010-09-13 02:52:09
【问题描述】:

当我使用任务时,如果资源(比如文件)可用,则该属性仅设置为 TRUE。如果不是,则该属性未定义。

当我打印属性的值时,如果资源可用,则返回 true,否则只打印属性名称。

如果资源可用,有没有办法将属性设置为某个值?我曾尝试在可用检查之前明确设置属性,但随后 ant 抱怨:

[可用] 已弃用 - 用于覆盖现有属性。 [可用] 构建文件不应为不同的值重用相同的属性名称。

【问题讨论】:

    标签: java ant build


    【解决方案1】:

    您可以将条件与 not 结合使用:

    http://ant.apache.org/manual/Tasks/condition.html

      <condition property="fooDoesNotExist">
        <not>
          <available filepath="path/to/foo"/>
        </not>
      </condition>
    

    【讨论】:

      【解决方案2】:
      <available filepath="/path/to/foo" property="foosThere" value="true"/>
      <property name="foosThere" value="false"/>
      

      foosThere 的分配只有在您的可用性检查尚未设置为 true 时才会成功。

      【讨论】:

        【解决方案3】:

        这种行为的原因是目标中的 if/unless 属性。如果/除非设置了具有该名称的属性,则将执行具有此类属性的目标。如果它设置为 false 或设置为 true 没有区别。因此,您可以使用 available-task 设置(或不设置)属性并基于此执行(或不执行)任务。在available-task之前设置属性是没有办法的,因为ant中的属性是不可变的,一旦设置就无法更改。

        如果之前未设置,则将属性设置为值有三种可能的解决方案:

        1. 您在 与非结合。
        2. 您创建了一个设置属性的任务,只有在未设置该属性时才会执行该任务(除非任务的属性)。
        3. 您只需在调用后设置属性为available。由于该属性仅在未设置时才会更改,因此这将满足您的需求。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-25
          • 1970-01-01
          • 2013-01-26
          • 2016-08-18
          • 2017-03-17
          • 1970-01-01
          • 2011-06-22
          相关资源
          最近更新 更多