Jak wykonać więcej niż jedno polecenie maven w pliku bat?


115

Zrobiłem plik nietoperza taki jak:

mvn clean;
pakiet mvn;

ale to nie działa, wykonywane jest tylko pierwsze polecenie.

czy ktoś może mi pomóc?

Odpowiedzi:


252

Posługiwać się

call mvn clean
call mvn package

Pamiętaj, że nie potrzebujesz średników w plikach wsadowych. Powodem, dla którego musisz użyć, calljest to, że mvnsam jest plikiem wsadowym, a pliki wsadowe muszą wywoływać się nawzajem call, w przeciwnym razie kontrola nie wraca do dzwoniącego.

Jeśli chcesz, aby kolejne polecenia odbijały się echem w wierszu poleceń (pokazywane w wyniku wsadowym), musisz to zrobić również echo onpo zakończeniu call mvn(w następnym wierszu). Dzieje się tak, ponieważ mvnwyłącza echo i nie włącza go ponownie.


2
to samo zgradle
Prabs

27

Odpowiedź Joeya jest świetna, ale być może bardziej kompletny przykład kodu pomoże każdemu takiemu jak ja, który również zastanawia się nad podobnym problemem tworzenia wielu projektów maven z pliku wsadowego w systemie Windows:

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

Możesz również mieć następującą jednowierszową:

call mvn clean package 

4
Mimo to powinni używać call, aby wszystko, co napiszą po mvnpoleceniu, zostało uruchomione.
Joey,

9

Mam więcej projektów do uruchomienia, stworzyłem taki bat taki:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install

8

Użyj opcji „wywołanie”, jeśli chcesz wywołać inny plik wsadowy w pliku nadrzędnym, aby kontrola została zwrócona do nadrzędnego pliku wsadowego i wykonywanie było kontynuowane.

np. zadzwoń do mvn clean install


5

Zaobserwowane zachowanie pochodzi z czasów MS-DOS 1.0 i jest zachowane ze względu na kompatybilność, jako rozwiązania należy używać funkcji wywołania Windows w następujący sposób:

call mvn clean
call mvn package

„Wywołanie” wykonuje jeden program wsadowy z innego i interpretuje go jako podprogram.


-1

możemy użyć poniższego, aby zbudować mavena i przekazać go do dowolnego folderu unixowego w celach programistycznych

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

Posługiwać się

połączenie mvn clean package

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

1
Gdzie jest tutaj więcej informacji niż w innych odpowiedziach? Wygląda na to, że jest to duplikat zaakceptowanej (9-letniej) odpowiedzi
jeb
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.