mvn test命令在batch文件中的坑
问题背景
最近我在写一个 java 版的数据结构与算法项目,开源在 gitee
和 github
上
每次我编写完成代码后,都要执行以下操作:
shell
# 测试,没有问题才会执行下面的步骤
mvn test
# 推送到 gitee
git push origin master
# 推送到 github
git push github master
很繁琐,每次都要手动执行,我使用的是 windows 电脑,所以想用一个 batch 文件来完成这些操作, batch 文件如下:
bat
@echo off
REM 执行Maven测试
echo Running Maven tests...
mvn test
REM 检查测试是否成功
if %ERRORLEVEL% == 0 (
echo Maven tests passed. Proceeding with git push...
REM 推送至Gitee
git push origin master
REM 推送至GitHub
git push github master
echo Code has been successfully pushed to both repositories.
) else (
echo Maven tests failed. Not pushing to repositories.
)
每次执行这个 batch 文件,都会在执行 mvn test
命令后退出,没有继续执行后面的步骤。
问题原因
在 batch 文件里面执行 Maven 的 mvn 命令后, mvn 之后的命令不会被执行,这是因为 mvn 本身也是 batch 文件,并且其结束时执行了 exit 命令,导致在这之后的所有命令都不会执行。
解决方法
在 mvn 之前加上 call 命令。 修正后的 batch 文件如下:
bat
@echo off
REM 执行Maven测试
echo Running Maven tests...
call mvn test
REM 检查测试是否成功
if %ERRORLEVEL% == 0 (
echo Maven tests passed. Proceeding with git push...
REM 推送至Gitee
git push origin master
REM 推送至GitHub
git push github master
echo Code has been successfully pushed to both repositories.
) else (
echo Maven tests failed. Not pushing to repositories.
)
这样就可以正常执行了。