如何在bat文件中执行多个maven命令?


114

我做了一个蝙蝠文件,像:

干净
mvn软件包;

但它不起作用,仅执行第一个命令。

有人能帮我吗?

Answers:


251

call mvn clean
call mvn package

请注意,批处理文件中不需要分号。而您需要使用的原因call是它mvn本身是一个批处理文件,并且批处理文件需要使用进行调用call,否则控制权不会返回给调用者。

如果希望后续命令回显到命令行(在批处理输出中显示),则还必须echo oncall mvn完成后执行操作(在下一行)。这是因为mvn关闭了回声而没有将其重新打开。


2
gradle
Prabs

27

Joey的回答很好,但是也许更完整的代码示例可以帮助像我这样的人,同时也解决从Windows中的批处理文件构建多个Maven项目的类似问题:

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
尽管如此,他们仍应使用callmvn命令,以便在命令后编写的所有内容都可以运行。
乔伊(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


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.