Maven и Exec: разветвление процесса?

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

2 ответа

Решение

Для справки, довольно хакерским решением является использование 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>

Попробуй это:

<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>
Другие вопросы по тегам