Maven и Exec: разветвление процесса?
Я пытаюсь использовать Maven для запуска приложения до запуска некоторых тестов интеграции. Я нахожусь в Windows. Моя конфигурация плагина Maven выглядит следующим образом:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>start-my-application</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>start_application.bat</executable>
<workingDirectory>./path/to/application</workingDirectory>
</configuration>
</execution>
<executions>
<plugin>
и мой командный файл выглядит следующим образом:
start myApplication.exe
При запуске изолированный пакетный файл создает отдельное окно для запуска приложения и немедленно возвращает элемент управления.
Однако при запуске из Maven сборка ожидает завершения процесса в отдельном окне перед продолжением. Это несколько поражает точку фазы тестирования интеграции...
Любые идеи, как я могу начать по-настоящему отдельный процесс в Maven, чтобы позволить продолжению сборки вместе с ним?
Ответы
Ответ 1
Для записи довольно хакерское решение - использовать maven-antrun-plugin
для вызова Ant, который способен размножать отдельные процессы:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>pre-integration-test</phase>
<configuration>
<target>
<exec executable="cmd"
dir="./path/to/application"
spawn="true">
<arg value="/c"/>
<arg value="start_application.bat"/>
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Ответ 2
Попробуйте следующее:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>start-my-application</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>call</executable>
<arguments>
<argument>start_application.bat</argument>
</arguments>
<workingDirectory>./path/to/application</workingDirectory>
</configuration>
</execution>
</executions>
</plugin>