2012-06-05 22 views
8

Necesito ejecutar un servidor (implementado en una clase Java) de Maven, pero si uso el objetivo exec: java, bloqueará maven y no pasará a las siguientes fases que se conectan al servidor .ejecutar servidor Java desde maven

¿Hay alguna forma de ejecutar la tarea exec: java de forma asíncrona, sin interrumpir la ejecución del programa?

Gracias!

+0

Para cualquier persona que busque soluciones recientes, intente https://github.com/bazaarvoice/maven-process-plugin –

Respuesta

5

Puede usar exec-maven-plugin para ejecutar el script de shell que iniciará su proceso y se desconectará de él (permitiendo que el proceso se ejecute en segundo plano). Algo como esto:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>start-server</id> 
     <phase>pre-integration-test</phase> 
     <goals> 
      <goal>exec</goal> 
     </goals> 
     <configuration> 
      <executable>src/test/scripts/run.sh</executable> 
      <arguments> 
      <argument>{server.home}/bin/server</argument> 
      </arguments> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Dónde run.sh pudiera ser así (para U * nix plataforma):

#! /bin/sh 
$* > /dev/null 2>&1 & 
exit 0 

Que debe hacer el truco.

0

Parece que usted puede hacer esto con el plugin antRun:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.3</version> 
      <configuration> 
       <tasks> 
        <java fork="true" spawn="true" classpathref="maven.runtime.classpath" className="fully.qualified.package.App"/> 
       </tasks> 
      </configuration> 
     </plugin> 
0

Si está ejecutando este tipo servidor con el fin de ejecutar medidas adicionales pruebas de integración en su Maven POM, a continuación, en realidad es mejor considerar utilizando una herramienta de integración continua como Jenkins, tiene una gran cantidad de Plugins que le permite ejecutar sus propias clases, iniciar y detener servidores, implementar aplicaciones y muchas otras posibilidades, y es gratis.

Cuestiones relacionadas