2012-06-27 61 views
6

這是我正在嘗試實現的:基於條件的antcall

如果設置了屬性,則調用antcall目標。這是可行的嗎?有人能告訴我如何?

<condition> 
    <isset property="some.property"> 
     <antcall target="do.something"> 
    </isset> 
</condition> 
+0

可能重複[如何檢查一個條件在螞蟻和取決於它的價值打印信息?](http://stackoverflow.com/questions/10680982/how-check-for-a-condition-in-ant並取決於它的價值打印消息) –

回答

6

像這樣的東西應該工作:

<if> 
    <isset property="some.property"/> 
    <then> 
     <antcall target="do.something"> 
    </then> 
</if> 

如果當時條件要求ant-contrib,但這樣做幾乎任何事情在螞蟻有用。

+0

太好了。適用於我。我很滿意Ant Contrib。 – soothsayer

-1

考慮,你也可以爲這些目的調用常規:

<use-groovy/> 
<groovy> 
    if (Boolean.valueOf(properties["some.property"])) { 
    ant.project.executeTarget("do.something") 
    } 
</groovy> 
6

我知道我真的晚了這一點,但這裏是另一種方式來做到這一點,如果你使用的是螞蟻的contrib的,如果沒有按哪裏不支持嵌套的antcall元素(我使用antcontrib 1.02b不支持)。

<target name="TaskUnderRightCondition" if="some.property"> 
    ... 
</target> 

可以進一步擴大這檢查,看看是否some.property應設置之前這個目標是通過使用叫做取決於如果屬性被評估之前監守所依賴的執行。因此,你可以有這樣的:

<target name="TestSomeValue"> 
    <condition property="some.property"> 
    <equals arg1="${someval}" arg2="${someOtherVal}" /> 
    </condition> 
</target> 

<target name="TaskUnderRightCondition" if="some.property" depends="TestSomeValue"> 
    ... 
</target> 

在這種情況下TestSomeValue叫,如果someval == someOtherVal然後some.property設定最後,TaskUnderRightCondition將被執行。如果someval!= someOtherVal,那麼TaskUnderRightCondition將被跳過。

您可以通過the documentation瞭解更多關於條件的信息。

+0

你能像''嗎? – siledh

+0

@siledh我不知道。我不這麼認爲。 –