2011-01-09 8 views

Antwort

7

Mit der Aufgabe Ant script können Sie eine Aufgabe in einer Skriptsprache implementieren. Wenn JDK 1.6 installiert ist, kann Ant JavaScript ausführen, ohne dass zusätzliche abhängige Bibliotheken benötigt werden. Zum Beispiel das JavaScript liest ein Ant-Eigenschaftswert und setzt dann eine andere Ant-Eigenschaft auf einer Bedingung abhängig:

<property name="version" value="2"/> 

<target name="init"> 
    <script language="javascript"><![CDATA[ 
    var version = parseInt(project.getProperty('version')); 
    project.setProperty('isGreater', version > 1); 
    ]]></script> 

    <echo message="${isGreater}"/> 
</target> 
4

Leider Ant gebaut ist in condition task kein IsGreaterThan Element haben. Sie können jedoch das im Projekt verfügbare IsGreaterThan condition verwenden. Eine andere Möglichkeit wäre, your own task für mehr als Vergleich zu rollen. Ich würde ersteres bevorzugen, weil es einfacher und schneller ist, und Sie erhalten auch eine Vielzahl von anderen useful tasks von Ant-Contrib.

+0

Der Versuch, dies zur Zeit zu verwenden. Haben Sie ein Beispiel für das Festlegen einer Eigenschaft? Der Versuch, einfach eine boolesche Eigenschaft auf das Ergebnis der Task isgreaterthan zu setzen oder in einer if-Task zu verwenden –

2

Wenn Sie nicht wollen (oder können) verwenden, um die Ant-Contrib-Bibliotheken, können Sie ein definieren compare Aufgabe mit Hilfe von Javascript:

<!-- returns the same results as Java's compareTo() method: --> 
<!-- -1 if arg1 < arg2, 0 if arg1 = arg2, 1 if arg1 > arg2 --> 
<scriptdef language="javascript" name="compare"> 
    <attribute name="arg1" /> 
    <attribute name="arg2" /> 
    <attribute name="result" /> 
    <![CDATA[ 
    var val1 = parseInt(attributes.get("arg1")); 
    var val2 = parseInt(attributes.get("arg2")); 
    var result = (val1 > val2 ? 1 : (val1 < val2 ? -1 : 0)); 
    project.setProperty(attributes.get("result"), result); 
    ]]> 
</scriptdef> 

Sie können es wie folgt verwenden:

<property name="myproperty" value="20" /> 
... 
<local name="compareResult" /> 
<compare arg1="${myproperty}" arg2="19" result="compareResult" /> 
<fail message="myproperty (${myproperty}) is greater than 19!"> 
    <condition> 
     <equals arg1="${compareResult}" arg2="1" /> 
    </condition> 
</fail> 
Verwandte Themen