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.