2010-01-28 2 views
3

В настоящее время я разрабатываю Java-приложение «отладчик», которое использует JDI для подключения к уже запущенному «целевому» Java-приложению. Есть ли способ заставить Ant запустить мое целевое приложение, а затем запустить мой «отладчик», в то время как первое приложение все еще работает?Может Ant запустить два приложения Java одновременно?

Да, я знаю, что я могу разработать приложение JDI для запуска целевой программы, но это не то, что я хочу прямо сейчас.

ответ

9

Вы можете создать две программы java из муравья parallel задача.

<parallel> 
    <sequential> 
    <java fork="true" classname="prog1 .... > 
    </sequential> 
    <sequential> 
    <sleep seconds="30"/> 
    <java fork="true" classname="prog2.... > 
    </sequential> 
</parallel> 

сна задача во втором потоке может быть заменить Waitfor условия а.

+0

Спасибо! Это именно то, что я искал! – Sandro

3

Посмотрите на the doc для директивы Ant <exec> - вы должны иметь возможность добавить вызов целевому приложению с помощью <exec>, который будет отключен с помощью параметра «spawn».

Редактировать: извините, «amp off» - это сленг для запуска процесса в фоновом режиме, который позволяет Ant продолжать работу во время выполнения этого процесса.

+0

Я вижу, единственная проблема, с которой я столкнулся с exec, заключается в том, что запуск java-программ по ОС очень отличается. Мне нужен был бы exec для всех os, нет? – Sandro

3

Вы можете, конечно, создавать процессы из Ant. Вот простой пример:

<target name="sleeper"> 
    <exec executable="sleep" spawn="yes"> 
     <arg value="100" /> 
    </exec> 
</target> 

Если запустить эту задачу * вы увидите Ant бежать к завершению, но ps покажет сон сохраняется.

Задача java также поддерживает spawn.

** пример предполагает вариант ОС UNIX, поскольку он использует команду sleep *.

+0

Есть ли независимое от ОС решение? – Sandro

+0

Использование java-задачи с помощью spawn не зависит от ОС. Если вы хотите создавать разные исполняемые файлы, вы, безусловно, направляетесь в мир, специфичный для ОС. Но задача exec позволяет указать, в какой ОС запускается задача. (Запустите это только в окнах, запустите это только в unix и т. Д.) – Matt

Смежные вопросы