2012-08-23 30 views
1

我是ANT的初學者。如何使用ant-contrib編寫條件邏輯

我在做什麼錯? ant-contrib-1.0b3,可用。我想調用默認的目標如下:

<target name="build"> 
<if> 
<equals arg1="${config.name}" arg2="foo" /> 
<then> 
    <depends="get-all-war,..." /> 
</then> 
<elseif> 
<equals arg1="${config.name}" arg2="mark" /> 
<then> 
    <depends="zip-wars, ..." /> 
</then> 
</elseif> 
<else> 
    <depends="get-all-war, zip-wars, docs, deleteAll" /> 
</else> 
</if> 

+0

@ HashMaper:你已經有了答案。請回來,接受答案,如果你喜歡的話,可以投票。 – Jayan

回答

0

你可以巧妙地使用宏來做同樣的事情。如果你的目標獲取,所有戰爭,拉鍊戰爭,文檔,deleteAll需要更多的時間,你可以這樣並行運行這些:

<target name="build"> 
    <if> 
    <equals arg1="${config.name}" arg2="foo" /> 
    <then> 
    <mGetAllWar/> 
    </then> 
    <elseif> 
    <equals arg1="${config.name}" arg2="mark" /> 
    <then> 
    <mZipWars /> 
    </then> 
    </elseif> 
    <else> 
    <mRestAllTargets/> 
    </else> 
</if> 

<mGetAllWar> 
    <parallel> 
    <antcall name="target1"> 
    <antcall name="target2"> 
    ... 
    </parallel> 
</mGetAllWar> 

<mZipWars > 
    <parallel> 
    <antcall name="target1"> 
    <antcall name="target2"> 
    ... 
    </parallel> 
</mZipWars > 

<mRestAllTargets> 
    <parallel> 
    <antcall name="target1"> 
    <antcall name="target2"> 
    ... 
    </parallel> 
</mRestAllTargets> 
3

你需要使用antcall執行其他目標。

<target name="build"> 
<if> 
<equals arg1="${config.name}" arg2="foo" /> 
<then> 
    <antcall target="get-all-war" /> 
    <antcall target="..." /> 
</then> 
<elseif> 
<equals arg1="${config.name}" arg2="mark" /> 
<then> 
    <antcall target="zip-wars" /> 
    <antcall target="..." /> 
</then> 
</elseif> 
<else> 
    <antcall target="get-all-war" /> 
    <antcall target="zip-wars" /> 
    <antcall target="docs" /> 
    <antcall target="deleteAll" /> 
</else> 
</if> 
+0

THANKS.I將對其進行測試 – Fawi