муравей javascript failonerror - PullRequest
9 голосов
/ 01 июля 2011

У меня есть задача муравья, включающая встроенный JavaScript. Я хотел бы, чтобы цель потерпела неудачу или преуспела на основе некоторой логики, которую я запускаю в 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 ]

9 голосов
/ 01 июля 2011

Вы можете заставить Ant завершиться через API Exit, но это вызывает исключение при сборке, которое приведет к грязной трассировке стека. Самый чистый метод - установить свойство в javascript, а затем протестировать его, используя fail task :

Javascript:

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

Муравей, сразу после задания скрипта:

<fail if="javascript.fail.message" message="${javascript.fail.message}" />
3 голосов
/ 01 июля 2011

Другая цель:

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

Сценарий:

`project.executeTarget("failme");`

Не тестировалось. Документация

1 голос
/ 27 августа 2018

Вы можете сделать это полностью в одном блоке JavaScript.

    <script language="javascript">
        <![CDATA[
                failTask = project.createTask("fail");
                failTask.setMessage("I have failed");
                failTask.perform();
    ]]>
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...