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

Zrobiłem plik bat w stylu:

mvn clean;
mvn package;

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

Czy ktoś może mi pomóc?
Author: Vince, 2011-07-04

6 answers

Użyj

call mvn clean
call mvn package

Zauważ, że nie potrzebujesz średników w plikach wsadowych. A powodem, dla którego musisz użyć call jest to, że mvn jest plikiem wsadowym, a pliki wsadowe muszą dzwonić do siebie za pomocą call, w przeciwnym razie Kontrola nie powróci do wywołującego.

Jeśli chcesz, aby kolejne polecenia były wyświetlane w wierszu poleceń (wyświetlane w wyjściu wsadowym), musisz również wykonać echo on po zakończeniu call mvn (W następnym wierszu). Dzieje się tak dlatego, że mvn wyłącza echo i nie włącza go ponownie.

 189
Author: Joey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-29 17:19:24

ODPOWIEDŹ Joeya jest świetna, ale może bardziej kompletny przykład kodu pomoże komuś takiemu jak ja, który również rozwiązuje podobny problem budowania wielu projektów Mavena z pliku wsadowego w 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
 24
Author: foupfeiffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 16:59:35

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

call mvn clean package 
 13
Author: carlspring,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-05 07:43:20

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

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install
 6
Author: Dmitri Algazin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-17 09:52:00

Użyj 'call', gdy chcesz wywołać inny plik wsadowy w pliku nadrzędnym, aby Kontrola została zwrócona do macierzystego pliku wsadowego i będzie kontynuowana.

E. g call mvn clean install

 6
Author: saurav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-27 09:39:20

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

call mvn clean
call mvn package

"call" wykonuje JEDEN program wsadowy z drugiego i interpretuje go jako podprogram.

 2
Author: Seweryn Habdank-Wojewódzki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-28 13:49:42