Как выполнить более одной команды maven в файле bat? - PullRequest
90 голосов
/ 04 июля 2011

Я сделал файл летучей мыши, например:

mvn clean;
mvn package;

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

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

Ответы [ 7 ]

214 голосов
/ 05 июля 2011

Использовать

call mvn clean
call mvn package

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

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

25 голосов
/ 29 ноября 2012

Ответ Джоуи великолепен, но, возможно, более полный пример кода поможет любому другому, как я, который также решает аналогичную проблему построения нескольких проектов 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
13 голосов
/ 04 июля 2011

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

call mvn clean package 
8 голосов
/ 17 ноября 2011

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

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install
7 голосов
/ 27 июня 2013

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

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

3 голосов
/ 26 августа 2016

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

call mvn clean
call mvn package

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

0 голосов
/ 26 апреля 2019

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