Может ли Ant запускать два Java-приложения одновременно?

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

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

3 ответа

Решение

Вы можете создать две Java-программы из параллельной задачи Ant.

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

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

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

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

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

Задача Java также поддерживает spawn,

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

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

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

Другие вопросы по тегам