Dlaczego tylko pierwsza linia tego pliku wsadowego Windows jest wykonywana, ale wszystkie trzy linie są wykonywane w powłoce poleceń?

Mam plik wsadowy, który wykonuje trzy polecenia Mavena, jeden po drugim. Każde polecenie może być z powodzeniem wykonane w skrypcie-samodzielnie!. Ale kiedy dodam wszystkie trzy polecenia do tego samego pliku, tylko pierwsze z nich zostanie wykonane przed zakończeniem skryptu. Wiesz 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

Również, jeśli skopiuję wszystkie trzy polecenia i wkleję je do powłoki poleceń (cmd.exe), wykonują jeden po drugim bez problemu. Więc jest to najwyraźniej jakiś problem z plikiem wsadowym dos.

Author: a_horse_with_no_name, 2010-10-27

5 answers

Maven używa plików wsadowych do swoich zadań. Z dowolnym skryptem wsadowym, należy wywołać inny skrypt za pomocą call polecenie, dzięki czemu wie, aby powrócić do skryptu po zakończeniu wywoływanego skryptu. Spróbuj przygotować call do wszystkich poleceń.

Kolejną rzeczą, którą możesz spróbować, jest użycie start polecenie, które powinno działać podobnie.

 249
Author: Jeff Mercado,
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-16 16:13:48

Posiadanie call pomaga

Jednak dzisiaj to nie jest

Oto jak rozwiązałem:

Zawartość pliku Bat (Jeśli Chcesz zatrzymać wsad gdy jeden z błędów cmds)

cmd1 && ^
cmd2 && ^
cmd3 && ^
cmd4

Zawartość pliku Bat (Jeśli Chcesz kontynuować wsad gdy jeden z błędów cmds)

cmd1 & ^
cmd2 & ^
cmd3 & ^
cmd4
 12
Author: Manohar Reddy Poreddy,
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
2018-02-14 03:09:08

Aby wykonać więcej kompilacji Mavena z jednego skryptu należy użyć funkcji windows wywołać w następujący sposób:

call mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar  -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar  -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar  -Dpackaging=jar -DgeneratePom=true
 5
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:48:54

Powinno być tak, że konkretne polecenie mvn exec s i nie zwraca, przez co nie wykonuje pozostałych poleceń.

 1
Author: Alan Haggai Alavi,
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
2010-10-27 19:12:45

Spróbuj zapisać następujący plik wsadowy i wykonać go:

Echo one
cmd
Echo two
cmd
Echo three
cmd

Tylko dwie pierwsze linie są wykonywane. Ale jeśli wpiszesz "exit" w wierszu polecenia, następne dwie linie są przetwarzane. 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!
 0
Author: Dr. belisarius,
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
2010-10-27 19:23:24