我在build.xml
文件中有以下行:
<foreach list="${clients}" delimiter="," target="clean other hosts" param="client.string"/>
但是,即使${clients}
为空(它可能包含换行符,因为它是从文件中读取),它也会调用目标一次。
是否有解决方法,以防止这种情况发生(调用循环)?
答案 0 :(得分:2)
从技术上讲,任务是正确的,因为"".split(",")
等于{""}
。但是,您可以使用<if>
task包装任务来解决此问题:
未测试:
<if>
<not><equals arg1="${clients}" arg2="" /></not>
<then>
<foreach list="${clients}" delimiter=","
target="clean other hosts" param="client.string"/>
</then>
</if>