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?

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.


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

15

Sie können auch den folgenden Einzeiler haben:

call mvn clean package 

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

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


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.


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

-2

Verwenden

Anruf mvn clean package

sample
------
echo %test%
cd %test%\ManaulActionAddNotes-test
call mvn clean
cd %test%\restAuthentication-test
call mvn clean

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.