2012-06-27 20 views
6

Dies ist, was ich versuche zu erreichen:antcall basierend auf einer Bedingung

Wenn eine Eigenschaft eingestellt ist, dann antcall Ziel anrufen. ist das machbar? kann mir jemand sagen wie?

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

möglich duplicate of [Wie überprüfen Sie eine Bedingung in ant und abhängig von ihrem Wert eine Nachricht drucken?] (Http://stackoverflow.com/questions/10680982/how-check-for-a-condition-in-ant -und-abhängig-auf-seinem-Wert-Drucken-einer-Nachricht) –

Antwort

6

So etwas sollte funktionieren:

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

Wenn dann Bedingungen ant-contrib erfordern, aber so tut so ziemlich alles nützlich in ant.

+0

Großartig. Funktioniert bei mir. Ich bin in Ordnung mit Ant Contrib. – soothsayer

-1

Betrachten können Sie auch für diese Zwecke groovy aufzurufen:

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

Ich weiß, ich bin wirklich spät, um diese aber hier ist eine andere Möglichkeit, dies zu tun, wenn Sie eine von ant-contrib verwenden, wo, wenn doesn Ich unterstütze kein verschachteltes antcall-Element (ich verwende Antcontrib 1.02b, was nicht funktioniert).

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

Sie können dies weiter erweitern, um zu prüfen, ob some.property nur eingestellt werden soll, bevor dieses Ziel durch den Einsatz aufgerufen wird, hängt becuase depends ausgeführt wird, bevor die wenn Attribut ausgewertet wird. So könnten Sie dies haben:

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

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

In diesem Fall TestSomeValue genannt wird und, wenn someval == someOtherVal dann some.property gesetzt und schließlich wird TaskUnderRightCondition ausgeführt werden. Wenn someval! = SomeOtherVal, wird TaskUnderRightCondition übersprungen.

Sie können mehr über Bedingungen über the documentation erfahren.

+0

Können Sie etwas wie ''? – siledh

+0

@siledh Ich weiß es nicht. Ich denke nicht. –

Verwandte Themen