2011-01-12 10 views
14

Estoy intentando utilizar Maven para iniciar una aplicación antes de ejecutar algunas pruebas de integración en ella. Estoy en Windows. Mi configuración de Maven Plugin se ve así:Maven and Exec: ¿se está realizando un proceso?

<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> 

y mi archivo por lotes es el siguiente:

start myApplication.exe 

cuando se ejecuta en el aislamiento, el archivo por lotes genera un ventana para ejecutar la aplicación e inmediatamente devuelve el control .

Sin embargo,, cuando se ejecuta desde Maven, la compilación espera a que finalice el proceso en la ventana separada para finalizar. Esto en cierto modo frustra el punto de la fase de prueba de integración ...

¿Alguna idea de cómo puedo iniciar un proceso realmente separado en Maven para permitir que la construcción continúe junto a él?

Respuesta

11

Para el registro, una solución bastante hacker es utilizar maven-antrun-plugin llamar hormiga, que es capaz de desove procesos separados:

<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> 
1

Prueba esto:

<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> 
+0

No hubo suerte me temo - Aparece una ventana de shell 'cmd' separada, pero la llamada' mvn' original que la creó bloquea y espera ... –

+0

Hmm, extraño. En mis pruebas, esto pareció funcionar. Oh, bien, lo siento, no funcionó para ti. – javamonkey79

+0

Además, esto sería solo para Windows. (Bien para OP, pero probablemente no para otros). – Barett

Cuestiones relacionadas