[英]Available tag in ant is always true if a file is unavailable also
即使给定路径下的文件不存在,此代码也始终返回true值
<available file="${x}/schema/@{componentname}-schema.sql" type="file" property="schema.file" />
<if>
<equals arg1="true" arg2="${schema.file}" />
<then>
<debug message="****schemafile is ${schema.file} ******" />
</then>
</if>
输出始终为:- * schemafile为true ***
即使在该路径下文件不可用。 请帮助我找到错误。
为了使用标准ANT任务,我重构了您的示例:
<project name="demo" default="run" xmlns:if="ant:if">
<property name="src.dir" location="src"/>
<target name="run">
<available file="${src.dir}/schema/schema.sql" type="file" property="schema.file" />
<echo message="****schemafile is ${schema.file} ******" if:set="schema.file"/>
</target>
</project>
笔记:
以下替代变体将与较旧版本的ANT一起使用。 它使用“ if” 目标属性执行条件执行:
<project name="demo" default="run">
<property name="src.dir" location="src"/>
<available file="${src.dir}/schema/schema.sql" type="file" property="schema.file" />
<target name="run" if="schema.file">
<echo message="****schemafile is ${schema.file} ******"/>
</target>
</project>
问题是我在for循环中遍历上面的代码,并且由于属性是不可变的,因此如果至少设置一次,它将始终设置为true。 这就是为什么在1次迭代后,即使找不到该文件,它也会回显schemafile为true **的原因。
我在代码后添加了以下代码以将属性设置为false
<var name="schema.file" unset="true"/>
<property name="schema.file" value="false"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.