2010-09-23 6 views
71

Je pensais que j'étais un utilisateur Maven expérimenté, mais j'ai un blocage mental sur la façon de le faire!Exécuter une seule exécution de plugin Maven?

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

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

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

+0

duplication possible de [Comment exécuter l'exécution du plugin maven directement à partir de la ligne de commande?] (Http://stackoverflow.com/questions/3166538/how-to-execute-maven-plugin-execution-directly-from-command- ligne) – Joe

Répondre

85

Comme indiqué dans How to execute maven plugin execution directly from command line?, cette fonctionnalité a été implemented comme MNG-5768, et est disponible dans Maven 3.3.1.

Le changement:

étendre la syntaxe d'appel du plugin directe pour permettre l'exécution en option @ paramètre-id, par exemple, org.apache.maven.plugins: maven-ressources-distance plugin: 1.0: processus @ executionId.

Ainsi, aussi longtemps que vous donnez à votre exécution un id:

mvn sql:[email protected] 

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

46

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

Non, not possible. Ce qui est possible est bien de définir « une » configuration à utiliser lorsque le plug-in est appelé à partir de la ligne de commande en utilisant la « spéciale » default-cli exécution id:

<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 il suffit d'appeler mvn sql:execute.

Voir ci-dessous pour les détails (du Maven 2.2.0 Release Notes):

  • MNG-3401 - A partir de Maven 2.2.0, objectifs appelé directement à partir de la ligne de commande peuvent être configurés dans le POM séparément autre plugin invocations en utilisant un spécial executionId appelé default-cli. Là où auparavant, toutes les configurations pour objectifs de ligne de commande devaient aller la configuration au niveau du plugin, Maven 2.2.0 permet des configurations spécifiques à la ligne de commande à être séparés en leur propre <execution>. Pour plus d'informations, consultez le Guide to Default Execution IDs.
+1

Je parie que vous pourriez réaliser ce que vous voulez en utilisant deux profils différents –

+4

Cette réponse est maintenant obsolète avec les versions actuelles de Maven. Voir la réponse fournie par @Joe – Noremac