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

115

Я сделал bat-файл вроде:

mvn clean;
mvn package;

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

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

Расио
источник

Ответы:

252

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

call mvn clean
call mvn package

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

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

детеныш
источник
2
то же самое сgradle
Prabs
27

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

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

call mvn clean package 
carlspring
источник
4
Тем не менее, они должны использовать, callчтобы все, что они напишут после mvnкоманды, выполнялось.
Joey
9

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

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install
Дмитрий Алгазин
источник
8

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

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

Saurav
источник
5

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

call mvn clean
call mvn package

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

Северин Хабданк-Воеводски
источник
0
Use these commands in batch file to run ur script. Keep your batch file where 
you pom.xml file is housed

set ProjectPath=C:\TetonWorkSpace\PeriodicApplicationCheck
cd %ProjectPath%
mvn clean test -Dxmlfile=Smoke.xml
pause

To Create a Task in Task scheduler:
1. Follow steps as prescribed to create task
2. In the action tab, just place the path of ur batch file as shown below
    C:\TetonWorkSpace\PeriodicApplicationCheck\testng.bat
3. You can ignore the rest two options like Add Argument and Start in. Use it 
   only when there are certain conditions to be used without which the script 
    becomes dysfunctional.

Размещение пути к пакетному файлу на вкладке «Действия».

Рави Чхетри
источник
-1

мы можем использовать следующее, чтобы создать 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%
user11404376
источник
-2

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

вызов mvn clean package

sample
------
echo %test%
cd %test%\ManaulActionAddNotes-test
call mvn clean
cd %test%\restAuthentication-test
call mvn clean
Бубеш Кумар
источник
1
Где здесь больше информации, чем в других ответах? Мне это кажется дубликатом принятого (9-летнего) ответа
jeb