我有这样的蚂蚁病:
<condition property="create_stub">
<and>
<available file="${create_stub_command_file}" property="stub_script.present" />
<isset property="packaged_stub_file"/>
</and>
</condition>
我的理解是:如果create_stub_command_file
存在,则设置stub_script.present=true
。但我不确定
<isset property="packaged_stub_file"/>
这是做什么的?它是如何改变整体状况的呢?即在哪种情况下条件块会评估为真?
答案 0 :(得分:1)
轻微的错误?
<condition property="create_stub">
<and>
<available file="${create_stub_command_file}" property="stub_script.present" />
<isset property="packaged_stub_file"/>
</and>
</condition>
我不相信property="stub_script.present"
正在做任何事情。它应该是:
<condition property="create_stub">
<and>
<available file="${create_stub_command_file}"/>
<isset property="packaged_stub_file"/>
</and>
</condition>
所有条件语句正在设置一个名为create_stub
的属性。如果存在任何名为{$create_stub_command_file}
的文件或目录,并且属性packaged_stuf_file
设置为任何值,它将设置该属性。只要设置了属性packaged_stub_file
,就可以设置为false
,空字符串,true
,YES! YES! YES!
或任何内容。
现在,您可以将此属性用作目标的测试:
<target name="package_stub"
if="create_stub">
<blah...blah...blah/>
<yadda...yadda...yadda/>
</target>
此目标package_stub
仅在设置了属性package_stub
时才会执行。只有在上面<condition>
为真的情况下才会设置它。
<condition>
语句应该在任何目标之外,因此它将在任何目标执行之前执行。
答案 1 :(得分:0)
等效伪代码:
if (File($create_stub_command_file).exists) then
property["stub_script.present"] := true
end
if (File($create_stub_command_file).exists AND property["property["stub_script.present"] != NULL) then
property["create_stub"] := true
end
原谅任何错误......我觉得条件块很棘手,需要大量的测试。你最好建议你保持简单。 ANT不是一种编程语言。