Mam plik wsadowy, który wykonuje trzy polecenia Mavena, jedno po drugim. Każde polecenie można pomyślnie wykonać w skrypcie - samodzielnie !. Ale kiedy dodam wszystkie trzy polecenia do tego samego pliku, tylko pierwsza jest wykonywana przed zakończeniem działania skryptu. Masz jakiś pomysł, dlaczego?
mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar -Dpackaging=jar -DgeneratePom=true
Ponadto, jeśli skopiuję wszystkie trzy polecenia i wkleię je do powłoki poleceń (cmd.exe), będą one wykonywane jedno po drugim bez problemu. Jest to najwyraźniej jakiś problem z plikiem wsadowym DOS.
windows
batch-file
cmd
windows-7
wiki
źródło
źródło
Odpowiedzi:
Maven używa plików wsadowych do prowadzenia swojej działalności. W przypadku każdego skryptu wsadowego należy wywołać inny skrypt za pomocą
call
polecenia, aby wiedział, że ma wrócić do skryptu po zakończeniu wykonywania wywoływanego skryptu. Spróbuj poprzedzićcall
wszystkie polecenia.Inną rzeczą, którą możesz spróbować, jest użycie
start
polecenia, które powinno działać podobnie.źródło
ant
wcześniej pliki wsadowe systemu Windows icall
było to wymaganeant
do wykonania. Bezcall
wsadu zatrzyma się po pierwszym poleceniu, stąd drugie dwa nie będą wykonywane. microsoft.com/resources/documentation/windows/xp/all/proddocs/ ... aby uzyskać więcej informacji na tematcall
start
spowoduje pojawienie się nowego okna, a każde z trzech poleceń będzie działać równolegle. Jeśli chcesz, aby działały synchronicznie, użyjcall
.call pause
na końcu (bez cudzysłowów), jeśli chcesz pozostawić otwarte okna cmdPosiadanie
call
pomocy. Jednak dzisiaj tak się nie stało.Oto jak to rozwiązałem:
Zawartość pliku bat (jeśli chcesz zatrzymać wsad, gdy wystąpi jeden z błędów cmds)
Zawartość pliku bat (jeśli chcesz kontynuować wsad po jednym z błędów cmds)
źródło
cmd1 && cmd2 && cmd3 && cmd4
, zasadniczo czyniąc wszystkie polecenia jedną linią.)call
Rozwiązanie nie zatrzymując się na błędach, to się robi.Aby wykonać więcej kompilacji Mavena z jednego skryptu, użyj funkcji wywołania systemu Windows w następujący sposób:
źródło
Powinno być tak, że określone
mvn
polecenieexec
s i nie zwraca, tym samym nie wykonując pozostałych poleceń.źródło
mvn
komendy?Spróbuj napisać następujący plik wsadowy i go wykonać:
Wykonywane są tylko pierwsze dwie linie. Ale jeśli wpiszesz „exit” w wierszu polecenia, przetworzone zostaną następne dwa wiersze. To pocisk ładujący inny.
Aby mieć pewność, że to nie jest to, co dzieje się w twoim skrypcie, po prostu wpisz "exit" po zakończeniu pierwszego polecenia.
HTH!
źródło
call
. To nie jest zagnieżdżona powłoka, która nie jest zakończona.