2011-12-21 55 views
0

我正在嘗試使兩個其他目標中的一個完成時運行的Ant目標。基本上,假設我有三個目標A1,A2和B,我希望B只有在A1或A2運行時才能運行。 A1和A2取決於一個條件,所以A1或A2將運行(但從來都不)。Ant目標是否可以依靠完成其中的一個依賴關係,但不能同時完成?

例如:

<target name="A1" if="${conditionalVar}"> 
<target name="A2" unless="${conditionalVar}"> 
<target name="B" depends="????????"> 

應該採取什麼 '依賴' 的目標B時?無論如何要做到這一點?

回答

3

是,這樣的配置是可能的,不是很複雜:

訣竅是設置如果設置將要進行測試的性質(例如,稱之爲「taskA1.use」)。

<target name="A1" if="taskA1.use" /> 
<target name="A2" unless="taskA1.use" /> 
<target name="B" depends="A1,A2" /> 

因此,即使B依賴於根據「taskA1.use」已被設置或不財產的兩個任務A1和A2只有一個會被執行。

+0

但是B依賴於A1和A2,所以不會爲了B發生而運行嗎?或者,即使設置了taskA1.use,A2會「計數」爲正在運行,因此A2不會運行其所有代碼? – pghprogrammer4 2011-12-21 16:04:01

+0

在目標運行之前評估條件。所以如果'taskA1.use'沒有設置,那麼A1將不會執行,並且不會被視爲「正在運行」。 – 2011-12-21 21:16:56

+0

由於屬性條件,A1和A2兩個目標都被調用,只有一個被實際執行。 – 2011-12-21 21:17:48

相關問題