Как выполнить более одной команды maven в файле bat?

Я сделал файл bat, например:

mvn clean;
mvn package;

но он не работает, выполняется только первая команда.

Может кто-нибудь мне помочь?

Ответ 1

Использование

call mvn clean
call mvn package

Обратите внимание, что вам не нужны точки с запятой в пакетных файлах. И причина, по которой вам нужно использовать call, заключается в том, что mvn сам является пакетным файлом, а командные файлы должны вызывать друг друга с помощью call, в противном случае управление не возвращается к вызывающему.

Если вы хотите, чтобы последующие команды отображались в командной строке (показать в пакетном выводе), вы также должны сделать echo on после завершения call mvn (на следующей строке). Это происходит потому, что mvn отключается и не включает его.

Ответ 2

Ответ на Joey велик, но, возможно, более полный пример кода поможет кому-то еще, как я, который также выясняет аналогичную проблему создания нескольких проектов maven из пакетного файла в 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

Ответ 3

Вы также можете иметь следующий однострочный слой:

call mvn clean package 

Ответ 4

У меня больше проектов для запуска, я создал такую ​​биту:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install

Ответ 5

Используйте "вызов", когда вы хотите вызывать другой пакетный файл в родительском файле, чтобы элемент управления был возвращен родительскому пакетному файлу, и он продолжит выполнение.

например, вызов mvn clean install

Ответ 6

Наблюдаемый bahaviour происходит со времени MS-DOS 1.0 и поддерживается по соображениям совместимости, так как решения вы должны использовать функцию Windows call следующим образом:

call mvn clean
call mvn package

"call" выполняет одну пакетную программу из другой и интерпретирует ее как подпрограмму.

Ответ 7

мы можем использовать следующее для сборки maven и передачи его в любую папку unix для разработки

SET projectName=commonutil
cd %gitpath%\%projectName%
call mvn clean install -DskipTests=true %password%
IF %ERRORLEVEL% EQU 0 (Echo No error found) ELSE goto exitdoor 
SET jarpath="%gitpath%\%projectName%\target\%projectName%-0.0.1-SNAPSHOT.jar"
copy /Y %jarpath% "%libpath%"
scpg3 %jarpath% %ssh_profile_name%@%hostname%:%dev_lib_folder_name%