Ant:如果属性包含某个字符串,如何失败

时间:2011-01-25 22:10:29

标签: javascript ant

我想写一个ant宏,如果提供的属性包含某个字符串,它将调用fail任务。我知道如何在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不允许你重置属性。我知道ant有能力设置本地属性。如何从javascript中访问本地属性?或者有更好的方法可以一起做到这一点吗?

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:1)

本地化该属性所需要做的就是在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( );

    ...
相关问题