2011-01-25 24 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的内部全局的,蚂蚁不会让你重置属性。我知道蚂蚁有能力设置本地属性。我如何从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 2011-08-31 03:44:15

1

您只需要在Javascript之前调用local task就可以了。

例如:

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

此外,相反,你可能enitrely在Javascript本地化属性:

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

    ... 
相关问题