Eine einzelne Maven-Plugin-Ausführung ausführen?

97

Ich dachte, ich wäre ein erfahrener Maven-Benutzer, aber ich habe eine mentale Blockade, wie das geht!

Ich konnte das Maven-SQL-Plugin verwenden, um ein Schema über Plugin-Ausführungen, die ich definiert und an die pre-integration-testPhase gebunden habe, zu löschen, zu erstellen und in einer Datenbank zu installieren .

Jetzt möchte ich jedoch dasselbe SQL-Plugin verwenden, um einige Beispieldaten über die Befehlszeile einzufügen, wann immer ich möchte - das heißt, nicht an ein Lebenszyklusziel gebunden. Es gibt einige verschiedene Sätze von Beispieldaten, daher möchte ich einige verschiedene Ausführungen definieren.

Aber gibt es eine Möglichkeit, eine dieser Ausführungen über die Befehlszeile auszuführen, indem Sie möglicherweise die Ausführungs-ID verwenden?

HDave
quelle

Antworten:

134

Wie unter Wie wird die Ausführung des Maven-Plugins direkt über die Befehlszeile ausgeführt? 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, solange Sie Ihrer Hinrichtung eine ID geben:

mvn sql:execute@specific-execution-id

verwendet die in Ihrem POM konfigurierte Ausführung.

Joe
quelle
Das ist großartig :)
GabrielBB
49

Aber gibt es eine Möglichkeit, eine dieser Ausführungen über die Befehlszeile auszuführen, indem Sie möglicherweise die Ausführungs-ID verwenden?

Nein, nicht möglich . Es ist jedoch möglich, "eine" Konfiguration zu definieren , die verwendet werden soll, wenn das Plugin über die Befehlszeile mit der "speziellen" default-cliAusführungs-ID aufgerufen wird :

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

Und einfach anrufen mvn sql:execute.

Einzelheiten finden Sie unten (aus den Versionshinweisen zu Maven 2.2.0 ):

  • MNG-3401 - Ab Maven 2.2.0 aufgerufen Ziele direkt von der Kommandozeile kann eine spezielle Verwendung getrennt von anderen Plugin Anrufungen im POM konfiguriert werden executionIdgenannt default-cli. Während zuvor alle Konfigurationen für Befehlszeilenziele in der Konfiguration auf Plugin-Ebene ausgeführt werden mussten, ermöglicht Maven 2.2.0 die Trennung von befehlszeilenspezifischen Konfigurationen in ihre eigenen <execution>. Weitere Informationen finden Sie im Handbuch zu Standardausführungs-IDs .
Pascal Thivent
quelle
1
Ich wette, Sie könnten erreichen, was Sie wollen, indem Sie zwei verschiedene Profile verwenden
Daniel Kaplan
4
Diese Antwort ist jetzt mit aktuellen Versionen von Maven veraltet. Siehe die Antwort von @Joe
Noremac