ant javascript failonerror

时间:2011-06-30 23:57:21

标签: javascript ant failonerror

我有一个包含嵌入式javascript的ant任务。基于我在javascript中运行的一些逻辑,我想让目标失败或成功:

<target name="analyze">
    <script language="javascript">
    <![CDATA[
            importClass(java.io.File);
            importClass(java.io.FileReader)
            importClass(java.io.BufferedReader)

            String.prototype.startsWith = function(str) {
                return (this.indexOf(str) === 0);
            }

            String.prototype.endsWith = function(str) {
                var lastIndex = this.lastIndexOf(str);
                return (lastIndex != -1) && (lastIndex + str.length == this.length);
            }

            //setup the source directory
            srcDir = project.getProperty("MY_HOME") + "/foo/src";

            if(srcDir.startsWith("/foo") { 
            //TARGET SHOULD PASS
            } else { 
            //TARGET SHOULD FAIL
            }

    ]]>
    </script>
</target>

3 个答案:

答案 0 :(得分:9)

你可以通过Exit API让Ant退出,但这会抛出一个构建异常,这将导致一个混乱的堆栈跟踪。最干净的方法是在javascript中设置属性,然后使用fail task对其进行测试:

使用Javascript:

project.setProperty( "javascript.fail.message", "There was a problem" );

Ant,脚本任务后立即执行:

<fail if="javascript.fail.message" message="${javascript.fail.message}" />

答案 1 :(得分:3)

另一个目标:

<target name="failme"><fail/></target>

脚本:

`project.executeTarget("failme");`

未经测试。 Documentation

答案 2 :(得分:1)

您可以在一个JavaScript块中完全完成它。

    <script language="javascript">
        <![CDATA[
                failTask = project.createTask("fail");
                failTask.setMessage("I have failed");
                failTask.perform();
    ]]>
    </script>