Ant和可用的任务 – 如果没有可用的东西怎么办?

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

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

如果资源不可用,有没有办法将属性设置为某个值? 我已经尝试在可用的检查之前显式设置属性,但是然后ant抱怨:

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

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

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

     
   

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

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

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

  1. 您将available-task与not结合使用。
  2. 您创建了一个设置属性的任务,该属性仅在未设置属性时执行(除非任务的属性)。
  3. 您只需在调用available 设置属性即可。 因为只有在未设置的情况下才会更改属性,这将完成您想要的操作。