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

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

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

[available] DEPRECATED -  used to override an existing property.
[available]   Build file should not reuse the same property name for different values.
有帮助吗?

解决方案

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

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

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

其他提示

<available filepath="/path/to/foo" property="foosThere" value="true"/>
<property name="foosThere" value="false"/>

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

此行为的原因是目标中的if / unless属性。如果/除非设置了具有该名称的属性,则将执行具有此属性的目标。如果设置为false或设置为true则没有区别。因此,您可以使用可用任务来设置(或不设置)属性,并基于此执行(或不执行)任务。在可用任务之前设置属性是没有解决方案,因为ant中的属性是不可变的,一旦设置它们就不能更改。

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

  1. 您使用的是可用任务 与没有结合。
  2. 您创建一个设置属性的任务,只有在未设置属性时才会执行该属性(除非任务的属性)。
  3. 您只需在调用可用后设置属性即可。因为只有在未设置的情况下才会更改属性,这将完成您想要的操作。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top