2011-01-09 12 views

答えて

7

Ant scriptタスクを使用すると、スクリプト言語でタスクを実装できます。 JDK 1.6がインストールされている場合、Antは追加の依存ライブラリを必要とせずにJavaScriptを実行できます。例えば、このJavaScriptはAntのプロパティ値を読み取り、条件に応じて、別のAntプロパティを設定します。

<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

、AntのIsGreaterThan要素を持っていませんcondition taskに建てられました。ただし、Ant-Contribプロジェクトで利用可能なIsGreaterThan conditionを使用できます。もう1つの選択肢は、比較のためにyour own taskを公開することです。私は前者が好きです。なぜなら、それはより簡単で速く、またuseful tasksのホストをAnt-Contribから得ることができるからです。

+0

現在、これを使用しようとしています。 これでプロパティを設定する例がありますか? booleanプロパティをisgreaterthanタスクの結果に設定するか、ifタスクで使用するだけです –

2

は、あなたがしたい(またはできない)していない場合のAnt-Contribのライブラリを使用して、あなたが定義することができますJavaScriptを使用してcompareタスク:

<!-- 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> 

あなたはこのようにそれを使用することができます:

<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> 
関連する問題