2013-07-15 131 views
0

我有一隻螞蟻條件是這樣的:螞蟻條件塊

<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

Equivolent僞代碼:

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不是一種編程語言。

1

有輕微的錯誤?我不相信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>聲明應該在任何目標之外,所以它會在執行任何目標之前執行。