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
artemb
la source

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.

Joe
la source
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

Dimitri Dewaele
la source
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.

Pascal Thivent
la source
ce n'était pas exactement l'événement question si votre réponse est correcte;).
Tony Chemit