¿Cómo ejecutar la ejecución del complemento maven directamente desde la línea de comando?

95

Tengo un complemento (antrun) con una ejecución configurada que tiene una identificación y no está vinculada a ninguna fase. ¿Puedo ejecutar esta ejecución directamente desde la línea de comando?

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

Ejecútelo con algo como:

mvn my-execution

o al menos

mvn magicplugin:execute -DexecutionId=my-execution
artemb
fuente

Respuestas:

130

Esta funcionalidad se implementó como MNG-5768 y está disponible en Maven 3.3.1.

El cambio:

extienda la sintaxis de invocación directa de complementos para permitir el parámetro opcional @ execution-id, por ejemplo, org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ executionId.

Entonces, en tu caso:

mvn antrun:run

usa el default-cliID de ejecución y:

mvn antrun:run@my-execution

usa la ejecución configurada en su pom.

Joe
fuente
1
A partir del ID de artefacto "maven-antrun-plugin", ¿cómo sabemos que es solo "antrun" el que debe usarse mvn antrun:run?
mks-d
1
@ mks-d vea pluginGroupspor qué org.apache.maven.plugins:maven-antrun-pluginse puede denominar antrun.
Joe
1
@Joe gracias, además de los grupos de complementos también está el mecanismo de resolución de prefijos de complementos aparentemente ...
mks-d
51

El medio más directo de ejecutar su complemento maven es especificar el objetivo del complemento directamente en la línea de comando.

mvn groupId:artifactId:version:goal

Más información en: Guía de desarrollo para complementos de Maven

Dimitri Dewaele
fuente
1
Pero, ¿cómo puedo ejecutar exactamente la ejecución "default-cli"? Si hay varias ejecuciones en la definición del complemento.
Anton Balashov
Estaba luchando para que se ejecutara un complemento de la utilidad Spring Boot Jasypt y, por alguna razón, la única forma en que podía lograr que Maven lo reconociera era siguiendo los consejos anteriores. mvn jasypt:encrypt ...No bastaba con especificar el objetivo directamente ( ). Gracias @ dimitri-dewaele.
Mike
15

Lo que está buscando se captura en Default + Plugin + Execution + IDs pero que yo sepa, actualmente no es compatible. Sin embargo, según los comentarios de MNG-3401 ( léalos hasta el final):

para mojos invocados directamente desde la línea de comando, puede proporcionar la configuración desde el POM usando el executionId: 'default-cli' así:

<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>

Esto debería funcionar en Maven 2.2.0 y 3.x.

Quizás esto sea suficiente para ti.

Pascal Thivent
fuente
ese no fue exactamente el evento de la pregunta si su respuesta es correcta;).
Tony Chemit