Processo gerado pelo exec-maven-plugin bloqueia o processo maven
Estou tentando executar o seguinte cenário usando o maven:
fase de pré-integração: Inicie um aplicativo baseado em Java usando a classe principal (usando o exec-maven-plugin) phase-phase: Execute os casos de teste de integração (usando o maven-failafe-plugiós-integração-fase: Interrompa o aplicativo normalmente (usando exec-maven-plugiAqui está o pom.xml snip:
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>launch-myApp</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<arguments>
<argument>-DMY_APP_HOME=/usr/home/target/local</argument>
<argument>-Djava.library.path=/usr/home/other/lib</argument>
<argument>-classpath</argument>
<classpath/>
<argument>com.foo.MyApp</argument>
</arguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.12</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<forkMode>always</forkMode>
</configuration>
</plugin>
</plugins>
Se eu executar o mvn pós-integração-teste, meu aplicativo está começando como um processo filho do processo maven, mas o processo de aplicação está impedindo o processo maven de executar os testes de integração que vêm na próxima fase. Mais tarde, descobri que existe um bug (ou falta de funcionalidade?) no plugin maven exec, pelo qual o processo do aplicativo bloqueia o processo maven. Para resolver esse problema, encapsulei a invocação do MyApp.java em um script de shell e, em seguida, anexei "/ dev / null 2> & 1 &" para gerar um processo em segundo plano separado. Aqui está o snip (este é apenas um snip e não o atual) de runTest.sh
java - DMY_APP_HOME =$2 com.foo.MyApp > /dev/null 2>&1 &
Embora isso resolva meu problema, existe alguma outra maneira de fazer isso? Estou faltando algum argumento para o exec-maven-plugin?