2010-01-05 6 views

Répondre

13

Si vous voulez exécuter cette commande dans le cadre du cycle de vie de construction normale, il n'y a pas d'autre moyen que la liaison du exec objectif de la phase 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> 

J'ai fait un test simple à l'aide la configuration ci-dessus (en utilisant comme ls « commande ») dans un projet maven fraîchement créé et exécutant mvn install produit la sortie suivante:

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

Comme nous pouvons le voir, la commande est exécutée à la fin de la phase install (après la copie de l'artefact dans le référentiel local).

Et si vous ne voulez vraiment pas ajouter l'extrait à votre pom, alors vous devrez appeler explicitement exec:exec après install sur la ligne de commande comme suggéré par whaley.

3

Le cycle de vie par défaut Maven se termine par l'installer et déployer objectifs - il n'y a pas de version avant et après de ces objectifs.

Les options possibles seraient:

  • Bind l'exécutif: exec mojo à la phase de déploiement. Je vous préviens contre cette idée car la phase de déploiement est vraiment destinée à déployer des artefacts dans un référentiel maven distant.

  • Exécuter l'exécutif: exec mojo après l'installation objectif dans votre appel mvn ... par exemple:

    mvn clean install exec: exec -Dexec.executable = "yourcommand" -Dexec.args = "arguments"

  • Si vous avez un projet multi-module, créez un autre module à la fin de votre <modules> et liez exec: exec à l'un des objectifs habituels dans ce module. Cela forcera ce module particulier à s'exécuter en supposant que les autres criteria the reactor looks at ne sont pas remplies. Une stratégie commune que j'utilise avec les projets Maven sur lesquels je travaille est "en cas de doute, créez un autre module".

Questions connexes