当我使用该任务时,该属性仅在资源(例如文件)可用时才设置为 TRUE。如果不是,则该属性未定义。
当我打印属性的值时,如果资源可用,则返回 true,否则只打印属性名称。
如果资源不可用,有没有办法将属性设置为某个值?我曾尝试在可用检查之前明确设置属性,但随后 ant 抱怨:
[可用] 已弃用 - 用于覆盖现有属性。 [可用] 构建文件不应为不同的值重用相同的属性名称。
您可以将条件与 not 结合使用:
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 的分配只有在您的可用性检查尚未设置为 true 时才会成功。
这种行为的原因是目标中的 if/unless 属性。如果/除非设置了具有该名称的属性,则将执行具有此类属性的目标。如果它设置为 false 或设置为 true 没有区别。因此,您可以使用 available-task 设置(或不设置)属性并基于此执行(或不执行)任务。在available-task之前设置属性是没有办法的,因为ant中的属性是不可变的,一旦设置就不能更改。
有三种可能的解决方案,将属性设置为之前未设置的值: