Почему выполняется только первая строка этого командного файла Windows, но все три строки выполняются в командной оболочке? - PullRequest
157 голосов
/ 27 октября 2010

У меня есть командный файл, который выполняет три команды 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.

Ответы [ 5 ]

266 голосов
/ 27 октября 2010

Maven использует командные файлы для ведения бизнеса.С любым пакетным сценарием вы должны вызвать другой сценарий, используя команду call, чтобы он знал, что нужно вернуться к вашему сценарию после завершения вызванного сценария.Попробуйте добавить call ко всем командам.

Другая вещь, которую вы можете попробовать, это использовать команду start, которая должна работать аналогично.

21 голосов
/ 01 апреля 2017

Наличие call помогает. Однако сегодня это не так.

Вот как я это решил:

Содержимое файла Bat (если вы хотите остановить пакет при одной из ошибок cmds)

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

Содержимое файла Bat (если вы хотите продолжить пакетное выполнение при одной из ошибок cmds)

cmd1 & ^
cmd2 & ^
cmd3 & ^
cmd4
6 голосов
/ 26 августа 2016

Чтобы выполнить больше сборок Maven из одного скрипта, вы должны использовать функцию Windows call следующим образом:

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
1 голос
/ 27 октября 2010

Должно быть, что конкретная mvn команда exec s и не возвращается, тем самым не выполняя остальные команды.

0 голосов
/ 27 октября 2010

Попробуйте написать следующий пакетный файл и выполнить его:

Echo one
cmd
Echo two
cmd
Echo three
cmd

Выполняются только первые две строки.Но если вы введете «exit» в командной строке, будут обработаны следующие две строки.Это оболочка, загружающая другую.

Чтобы убедиться, что это не то, что происходит в вашем скрипте, просто введите «exit», когда первая команда заканчивается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...