蚂蚁条件块

时间:2013-07-15 20:54:29

标签: ant

我有这样的蚂蚁病:

   <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"/>

这是做什么的?它是如何改变整体状况的呢?即在哪种情况下条件块会评估为真?

2 个答案:

答案 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,空字符串,trueYES! 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不是一种编程语言。