调用mvn tomcat:使用批处理文件在多个项目/不同目录中运行

时间:2016-09-20 03:25:12

标签: windows maven batch-file tomcat cmd

我是批处理文件的新手。 我有两个项目,我想使用批处理文件运行它们。 projectA应该在端口8081和projectB上运行8082.我尝试了以下两种方法,但只有projectA在端口8081上启动。

@echo off
SET CMB_HOME=C:\Development\CMB
cd %CMB_HOME%\projectA\
call mvn tomcat:run -Dmaven.tomcat.port=8081

cd %CMB_HOME%\projectB\
call mvn tomcat:run -Dmaven.tomcat.port=8082

似乎以下部分未被阅读。

cd %CMB_HOME%\projectB\
call mvn tomcat:run -Dmaven.tomcat.port=8082

我还尝试创建了两个批处理文件:master.bat和slave.bat。

master.bat包含以下内容并且正在调用slave.bat:

@echo off
SET CMB_HOME=C:\Development\CMB
cd %CMB_HOME%\projectA\
call mvn tomcat:run -Dmaven.tomcat.port=8081

SET SCRIPT_HOME=C:\Development\scripts\CMB
cd %SCRIPT_HOME%
call slave.bat

slave.bat包含以下内容:

@echo off
SET CMB_HOME=C:\Development\CMB
cd %CMB_HOME%\projectB\
call mvn tomcat:run -Dmaven.tomcat.port=8082

请帮忙。

1 个答案:

答案 0 :(得分:1)

  

编辑:更新了传递参数。

@echo off
SET CMB_HOME=C:\Development\CMB

pushd %CMB_HOME%\projectA\
start "Port 8081" cmd /c "mvn tomcat:run -Dmaven.tomcat.port=8081"
popd

pushd %CMB_HOME%\projectB\
start "Port 8082" cmd /c "mvn tomcat:run -Dmaven.tomcat.port=8082"
popd

因为我不知道mvn如何期望它的参数你可以在start命令中使用引号

start "Port 8081" cmd/c ^""mvn "tomcat:run -Dmaven.tomcat.port=8081" ^"
...
start "Port 8082" cmd/c ^""mvn "tomcat:run -Dmaven.tomcat.port=8082" ^"

或尝试解决方法......

@echo off

if "%~1" neq "" goto run

start "Port 8081" cmd /c ^""%~f0" projectA 8081 ^"
start "Port 8082" cmd /c ^""%~f0" projectB 8082 ^"
goto :eof

:run 
set "PORT=%~2"
set "CMB_HOME=C:\Development\CMB\%~1\"
pushd %CMB_HOME%
call mvn tomcat:run -Dmaven.tomcat.port=%PORT%
popd
goto :eof