Wie führe ich mehr als einen Maven-Befehl in einer Bat-Datei aus?

114

Ich habe eine Fledermausdatei erstellt wie:

mvn sauber;
MVN-Paket;

aber es funktioniert nicht, nur der erste Befehl wird ausgeführt.

kann mir jemand helfen?

rascio
quelle

Antworten:

251

Verwenden

call mvn clean
call mvn package

Beachten Sie, dass Sie in Batchdateien keine Semikolons benötigen. Und der Grund , warum Sie verwenden müssen , callist , dass mvnsich eine Batch - Datei und Batch - Dateien müssen mit einander rufen call, sonst zurückkehrt Steuerung nicht an den Anrufer.

Wenn nachfolgende Befehle in der Befehlszeile wiedergegeben werden sollen (in der Stapelausgabe anzeigen), müssen Sie dies auch echo onnach Abschluss call mvn(in der nächsten Zeile) tun . Dies liegt daran, dass das mvnEcho ausgeschaltet und nicht wieder eingeschaltet wird.

Joey
quelle
2
Gleiches gilt fürgradle
Prabs
27

Joeys Antwort ist großartig, aber vielleicht hilft ein vollständigeres Codebeispiel jedem anderen wie mir, der auch ein ähnliches Problem beim Erstellen mehrerer Maven-Projekte aus einer Batch-Datei in Windows herausfindet:

REM maven itself uses a batch file so each mvn must be preceded by "call"
REM the -f flag specifies where the pom.xml is found for the project
REM mvn install will save the target output to %userprofile%\.m2\repository ...

call mvn install -f c:\Users\John\workspace\PropertiesReader\pom.xml

call mvn install -f c:\Users\John\workspace\PropertiesWriter\pom.xml
foupfeiffer
quelle
15

Sie können auch den folgenden Einzeiler haben:

call mvn clean package 
Carlspring
quelle
4
Trotzdem sollten sie verwenden, calldamit alles, was sie nach dem mvnBefehl schreiben, ausgeführt wird.
Joey
9

Ich habe mehr Projekte zu laufen, ich habe solche Fledermaus erstellt:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install
Dmitri Algazin
quelle
8

Verwenden Sie 'call', wenn Sie eine andere Batchdatei in der übergeordneten Datei aufrufen möchten, damit das Steuerelement an die übergeordnete Batchdatei zurückgegeben wird und die Ausführung fortgesetzt wird.

zB mvn clean install aufrufen

Saurav
quelle
5

Die beobachtete bahaviour stammt aus der Zeit von MS-DOS 1.0 und es wird aus Kompatibilitätsgründen beibehalten, wie Lösungen von Windows verwenden wird Anruffunktion auf folgende Weise:

call mvn clean
call mvn package

Der "Aufruf" führt ein Stapelverarbeitungsprogramm von einem anderen aus und interpretiert es als Unterprogramm.

Seweryn Habdank-Wojewódzki
quelle
-1

Wir können Folgendes verwenden, um einen Maven zu erstellen und ihn zu Entwicklungszwecken an einen beliebigen Unix-Ordner zu übergeben

SET projectName=commonutil
cd %gitpath%\%projectName%
call mvn clean install -DskipTests=true %password%
IF %ERRORLEVEL% EQU 0 (Echo No error found) ELSE goto exitdoor 
SET jarpath="%gitpath%\%projectName%\target\%projectName%-0.0.1-SNAPSHOT.jar"
copy /Y %jarpath% "%libpath%"
scpg3 %jarpath% %ssh_profile_name%@%hostname%:%dev_lib_folder_name%
user11404376
quelle
-2

Verwenden

Anruf mvn clean package

sample
------
echo %test%
cd %test%\ManaulActionAddNotes-test
call mvn clean
cd %test%\restAuthentication-test
call mvn clean
Boobesh Kumar
quelle
1
Wo gibt es hier mehr Informationen als in den anderen Antworten? Es sieht für mich aus wie ein Duplikat der akzeptierten (9 Jahre alten) Antwort
jeb