Wie führe ich die Ausführung des Maven-Plugins direkt über die Befehlszeile aus?

93

Ich habe ein Plugin (antrun) mit einer konfigurierten Ausführung, die eine ID hat und an keine Phase gebunden ist. Kann ich diese Ausführung direkt über die Befehlszeile ausführen?

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

Ein Lauf mit so etwas wie:

mvn my-execution

oder zumindest

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

Antworten:

128

Diese Funktionalität wurde als MNG-5768 implementiert und ist in Maven 3.3.1 verfügbar.

Die Änderung wird:

Erweitern Sie die Aufrufsyntax für direkte Plugins, um optionale @ Execution-ID-Parameter zuzulassen, z. B. org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ executeId.

Also in Ihrem Fall:

mvn antrun:run

verwendet die default-cliAusführungs-ID und:

mvn antrun:run@my-execution

verwendet die in Ihrem POM konfigurierte Ausführung.

Joe
quelle
1
Woher wissen wir aus der Artefakt-ID "maven-antrun-plugin", dass nur "antrun" verwendet werden sollte mvn antrun:run?
mks-d
1
@ mks-d sehen, pluginGroupswarum org.apache.maven.plugins:maven-antrun-pluginals bezeichnet werden kann antrun.
Joe
1
@ Joe danke, zusätzlich zu den Plugin-Gruppen gibt es anscheinend auch den Plugin Prefix Resolution- Mechanismus ...
mks-d
49

Die direkteste Möglichkeit, Ihr Maven-Plugin auszuführen, besteht darin, das Plugin-Ziel direkt in der Befehlszeile anzugeben.

mvn groupId:artifactId:version:goal

Weitere Informationen unter: Entwicklungshandbuch für Maven-Plugins

Dimitri Dewaele
quelle
1
Aber wie kann ich genau "default-cli" ausführen? Wenn die Plugin-Definition mehrere Ausführungen enthält.
Anton Balashov
Ich kämpfte darum, ein Spring Boot Jasypt-Dienstprogramm-Plugin zum Laufen zu bringen, und aus irgendeinem Grund konnte ich es nur durch Befolgen der obigen Ratschläge von Maven erkennen lassen. Es mvn jasypt:encrypt ...reichte nicht aus , das Ziel direkt ( ) anzugeben . Danke @ dimitri-dewaele.
Mike
15

Was Sie suchen, wird in Standard + Plugin + Ausführung + IDs erfasst, aber meines Wissens derzeit nicht unterstützt. Laut den Kommentaren von MNG-3401 (lesen Sie sie bis zum Ende):

Für Mojos, die direkt über die Befehlszeile aufgerufen werden, können Sie die Konfiguration über das POM mithilfe der Ausführungs-ID: 'default-cli' wie folgt bereitstellen:

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

Dies sollte in Maven 2.2.0 und 3.x funktionieren.

Vielleicht reicht dir das.

Pascal Thivent
quelle
das war nicht genau das Frageereignis, wenn deine Antwort richtig ist;).
Tony Chemit