2010-01-05 14 views

risposta

13

Se si desidera eseguire questo comando come parte del normale ciclo di vita di compilazione, non c'è altro modo che vincolante l'obiettivo exec sul install fase:

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

Ho fatto un semplice test utilizzando la configurazione di cui sopra (usando ls come "COMMAND") con un progetto maven appena creata e funzionante mvn install produce il seguente output:

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

Come si può vedere, il comando viene eseguito alla fine della fase install (dopo la copia dell'articolo nel repository locale).

E se davvero non vuoi aggiungere lo snippet al tuo pom, dovrai chiamare esplicitamente exec:exec dopo install sulla riga di comando come suggerito da whaley.

3

l'esperto di default si conclude con la installazione e distribuire obiettivi - non esiste una versione pre e post di questi obiettivi.

potenziali opzioni potrebbe essere quella di:

  • Bind l'exec: mojo exec per la fase di distribuzione. Vi metterò in guardia contro questa idea in quanto la fase di deploy è pensata per distribuire artefatti in un repository maven remoto.

  • Eseguire l'exec: mojo exec dopo il gol installare nella vostra invocazione mvn ... ad esempio:

    mvn installazione pulita exec: exec -Dexec.executable = "yourcommand" -Dexec.args = "argomenti"

  • Se si dispone di un progetto multi-modulo, creare un altro modulo alla fine dei tuoi <moduli> e legare exec: exec qualsiasi obiettivi usuali all'interno di quel modulo. Questo forzerà questo particolare modulo a funzionare per ultimo assumendo che altri criteria the reactor looks at non siano soddisfatti. Una strategia comune che utilizzo con i progetti di Maven su cui lavoro è "in caso di dubbio, crea un altro modulo".

Problemi correlati