Ich möchte Linux-Shell-Befehle mit Maven ausführen. Folgendes habe ich versucht:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>hostname</executable>
</configuration>
</plugin>
Antworten:
Folgendes hat für mich funktioniert:
quelle
<configuration />
es danach folgen<executions />
und nicht darin platziert werden sollte. Ich habe eine ganze Weile gebraucht, um diesen einfachen syntaktischen Fehler zu finden. Mavens Fehlerausgabe ist wirklich nicht so hilfreich.<workingDirectory>${basedir}/scripts/</workingDirectory>
im Konfigurationsblock, anstatt den vollständigen Pfad<executable>
Das Problem hier ist, dass ich nicht weiß, was erwartet wird . Mit Ihrem aktuellen Setup würde das Aufrufen des Plugins in der Befehlszeile einfach funktionieren:
Das globale
configuration
wird verwendet, derhostname
Befehl wird ausgeführt (laptop
ist mein Hostname). Mit anderen Worten, das Plugin funktioniert wie erwartet.Wenn Sie nun möchten, dass ein Plugin als Teil des Builds ausgeführt wird , müssen Sie ein Ziel an eine bestimmte Phase binden . Zum Beispiel, um es zu binden
compile
:Und dann:
Beachten Sie, dass Sie ein
configuration
innerhalb eines angeben könnenexecution
.quelle
mvn exec:exec
das übergeordnete Element aufrufen , führt mvn es für alle Projekte des Builds mit mehreren Modulen aus, einschließlich des übergeordneten Projekts. Das übergeordnete POM hat jedoch keine Konfiguration für das Plugin, die erwartet, dass dasexecutable
definiert wird, daher die Fehlermeldung.configuration
innerhalb desexecution
Blocks angeben , funktioniert es, wenn es als Teil einer Gruppe (mvn install
) ausgeführt wird, aber derspecify the following: <configuration>
Fehler wird ausgelöst, wenn es direkt mit ausgeführt wirdmvn exec:exec
.Gelöst. Das Problem ist, dass die ausführbare Datei unter Linux anders funktioniert. Wenn Sie eine .sh-Datei ausführen möchten, sollten Sie wie folgt schreiben. Schreiben Sie es in pom.xml
quelle
2 Optionen:
npm start
mit Maven laufen , Sie können es mit dem folgenden erreichen:mvn exec:exec -Pstart-node
Dafür benötigen Sie den folgenden Maven-Abschnitt
npm install
Sie dies tun mit:mvn install
Und damit das funktioniert, benötigen Sie den folgenden Abschnitt:
quelle
Vielen Dank! Tomer Ben David. Es hat mir geholfen. Wie ich gerade mache, installiere Pip im Demo-Ordner, wie du erwähnt hast
quelle