выполнение муравья не работает

У меня есть следующий фрагмент муравья

 <macrodef name="webapp.start">
    <attribute name="name" />
    <sequential>
        <!--deploy-->
        <antcall target="webapp.@{name}" />
        <!--start server-->
        <antcall target="tomcat-server-start" />
        <!--go to URL-->
        <exec executable="firefox" os="Linux" >
            <arg line="-new-tab http://localhost:${tomcat.port}/@{name}" />
        </exec>
    </sequential>
</macrodef>

Он запускает сервер, но не открывает браузер. Если я помещаю задачу exec в отдельную цель и запускаю ее, она работает нормально. Я предполагаю, что запуск сервера, который является процессом, который не заканчивается, следующий не начинается. Как мне преодолеть эту проблему? Есть ли способ запустить exec как отдельный процесс.


ant
person user373201    schedule 24.08.2010    source источник


Ответы (1)


Я предполагаю, что запуск сервера, который является процессом, который не заканчивается, следующий не начинается

Я бы потратил минуту, чтобы убедиться, что это так. Используйте pgrep или ps, чтобы выяснить, чем занимаются ваши процессы.

Если вы подтвердите, что сервер никогда не завершится, я бы запустил команду «tomcat-server-start» в фоновом режиме (поставив команду оболочки с помощью &), если только это не имеет большого значения, если firefox запускается до tomcat-server. В качестве альтернативы используйте блок parallel в своем последовательном блоке, например:

<macrodef name="webapp.start">
    <attribute name="name" />
    <sequential>
        <!--deploy-->
        <antcall target="webapp.@{name}" />
        <parallel>
            <!--start server-->
            <antcall target="tomcat-server-start" />
            <!--go to URL-->
            <exec executable="firefox" os="Linux" >
                <arg line="-new-tab http://localhost:${tomcat.port}/@{name}" />
            </exec>
        </parallel>
    </sequential>
</macrodef>
person louisgab    schedule 24.08.2010
comment
Мой сервер должен был запуститься до запуска браузера. Поэтому я добавил задачу ожидания внутри parallel. Спасибо за вашу помощь. - person user373201; 25.08.2010