web-dev-qa-db-fra.com

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

Je pensais que j'étais 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 supprimer, 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 au pre-integration-test phase.

Cependant, maintenant, j'aimerais utiliser ce même plugin SQL pour insérer des exemples de données à tout moment à partir de la ligne de commande - c'est-à-dire, pas lié à un objectif de cycle de vie. Il existe différents ensembles 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?

86
HDave

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

Le changement:

étendre la syntaxe d'appel direct du plugin pour autoriser le paramètre facultatif @ execution-id, par exemple, org.Apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ executionId.

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

mvn sql:execute@specific-execution-id

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

112
Joe

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 possible cependant est de définir "a" la configuration à utiliser lorsque le plugin est appelé depuis la ligne de commande en utilisant le "spécial" default-cli id d'exécution:

<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 Maven 2.2.0 Release Notes ):

  • 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 plug-in à l'aide d'un executionId spécial appelé 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 dans leurs propres <execution>. Pour plus d'informations, consultez le Guide des ID d'exécution par défaut .
47
Pascal Thivent