Exécuter une seule exécution de plugin Maven?

97

Je pensais être un utilisateur expérimenté de Maven, mais j'ai un blocage mental sur la façon de procéder!

J'ai pu utiliser le plugin Maven sql pour déposer, créer et installer un schéma dans une base de données via des exécutions de plugin que j'ai définies et liées à la pre-integration-testphase.

Cependant, j'aimerais maintenant utiliser ce même plugin sql pour insérer des exemples de données quand je le souhaite à partir de la ligne de commande - c'est-à-dire non lié à un objectif de cycle de vie. Il existe quelques ensembles différents d'exemples de données, je voudrais donc définir quelques exécutions différentes.

Mais existe-t-il un moyen d'exécuter l'une de ces exécutions à partir de la ligne de commande en utilisant peut-être l'ID d'exécution?

HDave
la source

Réponses:

134

Comme indiqué dans Comment exécuter l'exécution du plugin maven directement à partir de la ligne de commande? , cette fonctionnalité a été implémentée en tant que MNG-5768 et est disponible dans Maven 3.3.1.

Le changement:

étendre la syntaxe d'invocation directe du plugin pour autoriser le paramètre optionnel @ execution-id, par exemple org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ executionId.

Donc, tant que vous donnez un identifiant à votre exécution:

mvn sql:execute@specific-execution-id

utilise l'exécution configurée dans votre pom.

Joe
la source
C'est super :)
GabrielBB
49

Mais existe-t-il un moyen d'exécuter l'une de ces exécutions à partir de la ligne de commande en utilisant peut-être l'ID d'exécution?

Non, pas possible . Ce qui est cependant possible, c'est de définir "une" configuration à utiliser lorsque le plugin est appelé depuis la ligne de commande en utilisant l' default-cliID d'exécution "spécial" :

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>sql-maven-plugin</artifactId>
  <version>1.4</version>
  ...
  <executions>
    <execution>
      <id>default-cli</id>
      <configuration>
        ...
      </configuration>
    </execution>
    ...
  </executions>
</plugin>

Et appelez simplement mvn sql:execute.

Voir ci-dessous pour les détails (à partir des notes de mise à jour de Maven 2.2.0 ):

  • MNG-3401 - À partir de Maven 2.2.0, les objectifs invoqués directement à partir de la ligne de commande peuvent être configurés dans le POM séparément des autres invocations de plugin à l'aide d'un executionIdappel spécial default-cli. Là où auparavant, toutes les configurations pour les objectifs de ligne de commande devaient aller dans la configuration au niveau du plugin, Maven 2.2.0 permet de séparer les configurations spécifiques à la ligne de commande <execution>. Pour plus d'informations, consultez le Guide des ID d'exécution par défaut .
Pascal Thivent
la source
1
Je parie que vous pourriez réaliser ce que vous voulez en utilisant deux profils différents
Daniel Kaplan
4
Cette réponse est désormais obsolète avec les versions actuelles de Maven. Voir la réponse de @Joe
Noremac