2010-01-05 18 views

Respuesta

13

Si desea ejecutar este comando como parte del ciclo de vida de la acumulación normal, no hay otra manera que la unión el objetivo exec en la fase install:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.1.1</version> 
     <executions> 
     <execution> 
      <id>my-exec</id> 
      <phase>install</phase> 
      <goals> 
      <goal>exec</goal> 
      </goals> 
      <inherited>false</inherited> 
     </execution> 
     </executions> 
     <configuration> 
     <executable>COMMAND</executable> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

Hice una prueba simple usando la configuración anterior (utilizando ls como "comando") con un proyecto Maven recién creado y funcionando mvn install produce el siguiente resultado:

 
$ mvn install 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building maven-exec-testcase 
[INFO] task-segment: [install] 
[INFO] ------------------------------------------------------------------------ 
... 
[INFO] [install:install {execution: default-install}] 
[INFO] Installing /home/pascal/Projects/maven-exec-testcase/target/maven-exec-testcase-1.0-SNAPSHOT.jar to /home/pascal/.m2/repository/com/mycompany/app/maven-exec-testcase/1.0-SNAPSHOT/maven-exec-testcase-1.0-SNAPSHOT.jar 
[INFO] [exec:exec {execution: my-exec}] 
[INFO] pom.xml 
[INFO] src 
[INFO] target 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 12 seconds 
[INFO] Finished at: Tue Jan 05 19:26:04 CET 2010 
[INFO] Final Memory: 11M/75M 
[INFO] ------------------------------------------------------------------------ 

Como podemos ver, el comando se ejecuta al final de la fase install (después de la copia del artefacto en el repositorio local).

Y si realmente no quiere añadir el fragmento a su pom, entonces usted tiene que llamar explícitamente exec:exec después install en la línea de comandos como se sugiere en Whaley.

3

El experto concluye con la instalación y desplegar metas - no hay una versión previa y posterior de esos objetivos.

opciones posibles serían:

  • Enlazar el ejecutivo: mojo exec para la fase de implementación. Le advertiría contra esa idea, ya que la fase de implementación realmente pretende desplegar artefactos en un repositorio de maven remoto.

  • Run el ejecutivo: mojo ejecutivo después del gol instalar en su invocación mvn ... por ejemplo:

    mvn exec instalación limpia: Exec -Dexec.executable = "" yourcommand -Dexec.args = "argumentos"

  • Si tiene un proyecto de varios módulos, cree otro módulo al final de sus módulos < > y enlace exec: exec a cualquiera de los objetivos habituales dentro de ese módulo. Esto obligará a este módulo en particular a ejecutarse por última vez, suponiendo que no se cumple el otro criteria the reactor looks at. Una estrategia común que empleo con los proyectos de maven en los que trabajo es "cuando dudes, crea otro módulo".

Cuestiones relacionadas