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

我做了一个蝙蝠档案:

mvn clean;
mvn package;

但它不工作,只执行第一个命令。

有人能帮帮我吗?

82471 次浏览

你也可以使用下面的俏皮话:

call mvn clean package

使用

call mvn clean
call mvn package

注意,在批处理文件中不需要分号。之所以需要使用 call,是因为 mvn本身是一个批处理文件,批处理文件需要用 call相互调用,否则控制权不会返回给调用者。

如果希望后续命令回显到命令行(在批量输出中显示) ,还必须在完成 call mvn之后(在下一行)执行 echo on。这是因为 mvn关闭了 echo 而不再打开它。

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

@echo off
SET DEVELOPMENT_HOME=C:\Projects


cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install


cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install

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

当您想要调用父文件中的另一个批处理文件时,请使用“ call”,这样控件将返回到父批处理文件并继续执行。

例如调用 mvn clean install

所观察到的行为来自 MS-DOS 1.0时代,由于兼容性的原因,它被保留了下来。作为一种解决方案,你应该按照以下方式使用 Windows打电话功能:

call mvn clean
call mvn package

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

我们可以使用以下代码构建一个 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%

使用

呼叫 mvn clean package

sample
------
echo %test%
cd %test%\ManaulActionAddNotes-test
call mvn clean
cd %test%\restAuthentication-test
call mvn clean
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.

Placing path of the batch file in Action Tab.