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

ras*_*cio 94 windows batch-file maven

我制作了一个蝙蝠文件:

mvn clean;
mvn package;

但它不起作用,只执行第一个命令.

有人能帮我吗?

Joe*_*oey 224

使用

call mvn clean
call mvn package
Run Code Online (Sandbox Code Playgroud)

请注意,批处理文件中不需要分号.而你需要使用的原因call是它mvn本身是一个批处理文件,批处理文件需要相互调用call,否则控件不会返回给调用者.

如果您希望后续命令回显到命令行(在批处理输出中显示),则还必须echo oncall mvn完成后执行(在下一行).这是因为mvn关闭回声并且不会将其重新打开.

  • 与`gradle`相同 (2认同)

小智 26

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
Run Code Online (Sandbox Code Playgroud)


car*_*ing 13

您还可以使用以下单行:

call mvn clean package 
Run Code Online (Sandbox Code Playgroud)

  • 但是,他们应该使用`call`,这样他们在`mvn`命令之后编写的任何东西都会运行. (3认同)

Dmi*_*zin 8

我有更多项目要运行,我创建了这样的蝙蝠:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install
Run Code Online (Sandbox Code Playgroud)


sau*_*rav 7

如果要在父文件中调用另一个批处理文件,请使用"调用",以便控制将返回到父批处理文件,并将继续执行.

例如,调用mvn clean install


Sew*_*zki 6

观察到的行为来自 MS-DOS 1.0 时代,出于兼容性原因保留,作为解决方案,您应按以下方式使用 Windows调用函数:

call mvn clean
call mvn package
Run Code Online (Sandbox Code Playgroud)

“调用”从另一个执行一个批处理程序并将其解释为子程序。