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?

rascio
źródło

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.

Joey
źródło
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
foupfeiffer
źródło
15

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

call mvn clean package 
carlspring
źródło
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
Dmitri Algazin
źródło
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

saurav
źródło
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.

Seweryn Habdank-Wojewódzki
źródło
-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%
user11404376
źródło
-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
Boobesh kumar
źródło
1
Gdzie jest tutaj więcej informacji niż w innych odpowiedziach? Wygląda na to, że jest to duplikat zaakceptowanej (9-letniej) odpowiedzi
jeb