У меня есть командный файл, который выполняет три команды Maven, одна за другой. Каждая команда может быть успешно выполнена в скрипте - сама! Но когда я добавляю все три команды в один и тот же файл, только первая выполняется до выхода из скрипта. Есть идеи почему?
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
Кроме того, если я скопирую все три команды и вставлю их в командную оболочку (cmd.exe), они будут выполняться одна за другой без проблем. Так что это, очевидно, некоторая проблема с пакетным файлом DOS.
Ответы:
Maven использует командные файлы для ведения бизнеса. С любым пакетным сценарием вы должны вызвать другой сценарий, используя
call
команду, чтобы он знал, чтобы вернуться к вашему сценарию после завершения вызванного сценария. Попробуйте присоединитьсяcall
ко всем командам.Другая вещь, которую вы можете попробовать, это использовать
start
команду, которая должна работать аналогично.источник
ant
в пакетные файлы Windows раньше, иcall
было необходимо,ant
чтобы выполнить. Безcall
пакета остановится после первой команды, следовательно, вторая не выполняется. microsoft.com/resources/documentation/windows/xp/all/proddocs/… для получения дополнительной информацииcall
start
приведет к появлению нового окна, и каждая из трех команд будет работать параллельно. Если вам нужно, чтобы они работали синхронно, используйтеcall
.call pause
в конце (без кавычек), если вы хотите, чтобы окна cmd были открытыНаличие
call
помогает. Однако сегодня это не так.Вот как я это решил:
Содержимое файла Bat (если вы хотите остановить пакетную обработку при одной из ошибок cmds)
Содержимое файла Bat (если вы хотите продолжить пакет, когда одна из ошибок cmds)
источник
cmd1 && cmd2 && cmd3 && cmd4
, что все команды по существу объединены в одну строку.)call
Решение не останавливаясь на ошибки, это делает.Чтобы выполнить больше сборок Maven из одного скрипта, вы должны использовать функцию вызова Windows следующим образом:
источник
Должно быть, что конкретная
mvn
командаexec
s и не возвращается, тем самым не выполняя остальные команды.источник
mvn
команду?Попробуйте написать следующий пакетный файл и выполнить его:
Только первые две строки выполняются. Но если вы введете «exit» в командной строке, будут обработаны следующие две строки. Это оболочка, загружающая другую.
Чтобы убедиться, что это не то, что происходит в вашем скрипте, просто введите «выход», когда первая команда заканчивается.
НТН!
источник
call
. Это не вложенная оболочка, которая не завершена.