题
当我使用该任务时,如果资源(例如文件)可用,则该属性仅设置为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中的属性是不可变的,一旦设置它们就不能更改。
有三种可能的解决方案,如果在之前未设置,则将属性设置为值:
- 您使用的是可用任务 与没有结合。
- 您创建一个设置属性的任务,只有在未设置属性时才会执行该属性(除非任务的属性)。
- 您只需在调用可用后设置属性即可。因为只有在未设置的情况下才会更改属性,这将完成您想要的操作。 醇>
不隶属于 StackOverflow