Estoy tratando de ejecutar el siguiente escenario usando Maven:proceso generado por los bloques exec-experto-plugin el proceso de experto
- integración previa de fase: Iniciar una aplicación basada en Java usando una clase principal (utilizando Exec -maven-plugin)
- integración de fase: Ejecutar los casos de prueba de integración (usando maven-a prueba de fallos-Plugin)
- post-integración-fase: Detener la aplicación con gracia (usando exec-maven-plugin)
Aquí está p om.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>
Si ejecuto post-integración-mvn test, mi solicitud es empezar como un proceso hijo del proceso experto, pero el proceso de aplicación está bloqueando el proceso de experto de la ejecución de las pruebas de integración que viene en la próxima fase. Más tarde descubrí que hay un bug (or missing functionality?) en el complemento maven exec, debido a que el proceso de aplicación bloquea el proceso de maven. Para abordar este problema, he encapsulado la invocación de MyApp.java en un script de shell y luego he añadido "/ dev/null 2> " para engendrar un proceso de fondo separado. Aquí está el recorte (esto es sólo una ganga y no el real) de runTest.sh:
java - DMY_APP_HOME =$2 com.foo.MyApp > /dev/null 2>&1 &
Aunque esto resuelve mi problema, ¿hay alguna otra manera de hacerlo? ¿Me estoy perdiendo cualquier argumento para exec-maven-plugin?
Sí, tiene usted razón. Windows va a ser un problema con mi solución. –