【问题标题】:Ant: how to fail if property contains a certain stringAnt:如果属性包含某个字符串,如何失败
【发布时间】:2011-01-25 22:10:29
【问题描述】:

我想编写一个 ant 宏,如果提供的属性包含某个字符串,它将调用失败任务。我知道如何在 ant 中进行字符串比较的唯一方法是使用 javascript。我有这样的事情:

<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 内部设置了一个全局属性,而 ant 不允许您重置属性。我知道蚂蚁有能力设置本地属性。如何从 javascript 中访问本地属性?还是有更好的方法来一起完成这一切?

【问题讨论】:

    标签: javascript ant


    【解决方案1】:
    <condition property="missing-properties">
        <matches pattern="YOUR-PATTERN" string="${THE-ATTRIBUTE}"/>
    </condition>
    <fail message="Input failed!" if="missing-properties"/>
    

    【讨论】:

      【解决方案2】:

      本地化属性所需要做的就是在 Javascript 之前为其调用 local task

      例如:

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

      另外,您也可以在 Javascript 中完全本地化该属性:

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

      【讨论】:

        猜你喜欢
        • 2010-11-26
        • 1970-01-01
        • 1970-01-01
        • 2014-03-22
        • 2011-01-22
        • 1970-01-01
        相关资源
        最近更新 更多