eine Aufgabe Beitrag Maven Laufen installieren
Frage
Ich möchte ein einfaches exec Gefechts Maven Phase installieren laufen. Was ist die einfachste Art und Weise möglich, dies zu erreichen? (Ohne neue Plugins hinzufügen)
Lösung
Wenn Sie diesen Befehl als Teil des normalen Build Lebenszyklus ausgeführt werden soll, gibt es keine andere Möglichkeit, als die Bindung des exec
Ziel auf der install
Phase:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>my-exec</id>
<phase>install</phase>
<goals>
<goal>exec</goal>
</goals>
<inherited>false</inherited>
</execution>
</executions>
<configuration>
<executable>COMMAND</executable>
</configuration>
</plugin>
</plugins>
</build>
Ich habe einen einfachen Test die Konfiguration oben (mit ls
als „COMMAND“) mit einem frisch erstellten Maven Projekt und laufen mvn install
erzeugt die folgende Ausgabe mit:
$ mvn install [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building maven-exec-testcase [INFO] task-segment: [install] [INFO] ------------------------------------------------------------------------ ... [INFO] [install:install {execution: default-install}] [INFO] Installing /home/pascal/Projects/maven-exec-testcase/target/maven-exec-testcase-1.0-SNAPSHOT.jar to /home/pascal/.m2/repository/com/mycompany/app/maven-exec-testcase/1.0-SNAPSHOT/maven-exec-testcase-1.0-SNAPSHOT.jar [INFO] [exec:exec {execution: my-exec}] [INFO] pom.xml [INFO] src [INFO] target [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 12 seconds [INFO] Finished at: Tue Jan 05 19:26:04 CET 2010 [INFO] Final Memory: 11M/75M [INFO] ------------------------------------------------------------------------
Wie wir sehen können, wird der Befehl ausgeführt am Ende der install
Phase (nach der Kopie des Artefakts an dem lokalen Repository).
Und wenn Sie wirklich wollen nicht die Schnipsel zu Ihrem pom hinzufügen, dann werden Sie explizit müssen exec:exec
nach install
auf der Kommandozeile aufrufen, wie durch whaley vorgeschlagen.
Andere Tipps
Die Maven Standardlebenszyklus endet mit dem install und deploy Ziele -. Gibt es keine Pre- und Post-Version dieser Ziele
Mögliche Optionen wären:
-
Binden Sie die exec: exec mojo mit der deploy Phase. Ich würde Sie gegen diese Idee warnen wie die deploy Phase wirklich gemeint ist, Artefakte zu einer Remote-Maven-Repository zu implementieren.
-
Führen Sie die exec: exec mojo, nachdem das Ziel in Ihrem mvn Aufruf installieren ... z.
MVN reinigen installieren exec: exec -Dexec.executable = "yourcommand" -Dexec.args = "Argumente"
-
Wenn Sie ein Multi-Modul-Projekt haben, erstellen Sie ein anderes Modul am Ende der
und binden exec: exec einem der üblichen Ziele innerhalb dieses Moduls. Dadurch wird dieses spezielle Modul zwingen zuletzt unter der Annahme, andere Kriterien rel="nofollow der Reaktor betrachtet nicht erfüllt ist. Eine gemeinsame Strategie, die ich mit Maven Projekten beschäftigen auf ich arbeite, ist „im Zweifelsfall ein anderes Modul erstellen“.