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