2011-01-25 6 views
8

指定された属性に特定の文字列が含まれている場合、失敗タスクを呼び出すantマクロを書きたいと思います。私が蟻で文字列比較を行う方法を知っている唯一の方法は、javascriptを使うことです。Ant:プロパティに特定の文字列が含まれていると失敗する方法

<macrodef name="check-for-error"> 
    <attribute name="input"/> 
    <sequential> 
     <echo message="@{input}"/> 
     <script language="javascript"> 
      <![CDATA[ 
      var response= "@{input}"; 
      if(response.indexOf("FAIL") !=-1){ 
       project.setProperty("error","true"); 
      } 
      ]]> 
     </script> 
     <fail message="INPUT FAILED" if="${error}"/> 
    </sequential> 
</macrodef> 

このアプローチの問題は、私はジャバスクリプトのグローバル内部でプロパティを設定していて、アリはあなたがプロパティをリセットさせないことです:私はこのような何かを持っています。私はアリにローカルプロパティを設定する機能があることを知っています。 JavaScript内からローカルプロパティにアクセスするにはどうすればよいですか?または、これをすべて一緒に行うより良い方法がありますか?

答えて

8
<condition property="missing-properties"> 
    <matches pattern="YOUR-PATTERN" string="${THE-ATTRIBUTE}"/> 
</condition> 
<fail message="Input failed!" if="missing-properties"/> 
+1

これは、アリのバージョン1.8.2と私のための感謝を働きました! – larham1

1

、プロパティをローカライズするために必要なのは前JavaScriptにそれのためのlocal taskを呼び出すことです。例えば

<sequential> 
    <echo message="@{input}"/> 
    <local name="error"/>  <!-- Added this line. --> 
    <script language="javascript"> 
    ... 

また、代わりに、あなたはJavascriptでenitrelyプロパティをローカライズする場合があります

<script language="javascript"><![CDATA[ 
    localiser = project.createTask("local"); 
    localiser.setName("error"); 
    localiser.perform(); 

    ... 
関連する問題