Як виконати більше однієї команди Maven у файлі bat?


115

Я створив файл bat як:

mvn чистий;
mvn пакет;

але це не працює, виконується лише перша команда.

хтось може мені допомогти?

Відповіді:


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

15

Ви також можете мати такий одноколісний:

call mvn clean package 

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

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

наприклад, зателефонуйте mvn clean install


5

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

call mvn clean
call mvn package

"Виклик" виконує одну пакетну програму від іншої та інтерпретує її як підпрограму.


-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%

-2

Використовуйте

дзвінок mvn clean package

sample
------
echo %test%
cd %test%\ManaulActionAddNotes-test
call mvn clean
cd %test%\restAuthentication-test
call mvn clean

1
Де тут більше інформації, ніж в інших відповідях? Мені це здається дублікатом прийнятої (9-річної) відповіді
jeb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.