Comment exécuter l'exécution du plugin maven directement à partir de la ligne de commande?


95

J'ai un plugin (antrun) avec une exécution configurée qui a un identifiant et n'est lié à aucune phase. Puis-je exécuter cette exécution directement à partir de la ligne de commande?

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <id>my-execution</id>
      ...
    </execution>
  </executions>
</plugin>

Un exécutez-le avec quelque chose comme:

mvn my-execution

ou au moins

mvn magicplugin:execute -DexecutionId=my-execution

Réponses:


129

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, dans votre cas:

mvn antrun:run

utilise l' default-cliID d'exécution et:

mvn antrun:run@my-execution

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


1
À partir de l'ID d'artefact "maven-antrun-plugin", comment savons-nous que c'est juste "antrun" qui devrait être utilisé mvn antrun:run?
mks-d

1
@ mks-d voyez pluginGroupspourquoi org.apache.maven.plugins:maven-antrun-pluginpeut être appelé antrun.
Joe le

1
@Joe merci, en plus des groupes de plugins, il y a aussi le mécanisme de résolution de préfixe de plug
-in

51

Le moyen le plus direct d'exécuter votre plugin maven est de spécifier l'objectif du plugin directement sur la ligne de commande.

mvn groupId:artifactId:version:goal

Plus d'informations sur: Guide de développement des plugins Maven


1
Mais comment puis-je exécuter exactement l'exécution "default-cli"? S'il y a plusieurs exécutions dans la définition du plugin.
Anton Balashov le

Je me battais pour faire fonctionner un plugin utilitaire Spring Boot Jasypt, et pour une raison quelconque, la seule façon de le faire reconnaître par Maven était de suivre les conseils ci-dessus. Il mvn jasypt:encrypt ...ne suffisait pas de spécifier directement l'objectif ( ). Merci @ dimitri-dewaele.
Mike

15

Ce que vous recherchez est capturé dans Default + Plugin + Execution + IDs mais à ma connaissance actuellement non pris en charge. Cependant, selon les commentaires de MNG-3401 (lisez-les jusqu'à la fin):

pour les mojos appelés directement à partir de la ligne de commande, vous pouvez fournir une configuration depuis le POM en utilisant executionId: 'default-cli' comme ceci:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <executions>
    <execution>
      <id>default-cli</id>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
          <descriptorRef>project</descriptorRef>
        </descriptorRefs>
      </configuration>
    </execution>
  </executions>
</plugin>

Cela devrait fonctionner dans Maven 2.2.0 et 3.x.

Peut-être que cela vous suffira.


ce n'était pas exactement l'événement question si votre réponse est correcte;).
Tony Chemit
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.