将脚本放到被传包的指定目录里, 如com
@echo off
chcp 65001 >nul 2>&1
setlocal enabledelayedexpansion
:: 定义日志文件路径(脚本同级目录下的 maven_deploy.log)
set "LOG_FILE=%~dp0maven_deploy.log"
:: 初始化日志文件(覆盖旧日志)
echo ============================================== > "%LOG_FILE%"
echo 部署开始时间: %date% %time% >> "%LOG_FILE%"
echo ============================================== >> "%LOG_FILE%"
:: 仓库配置(统一修改这里即可)
set "NEXUS_URL=https://nexus.yuhong.com.cn:18081/repository/maven-releases/"
set "REPO_ID=releases_remote"
:: 递归遍历当前目录下所有.jar文件
for /r %%j in (*.jar) do (
:: 获取JAR文件所在目录和文件名(不含扩展名)
set "JAR_PATH=%%j"
set "FILE_NAME=%%~nj"
set "PARENT_DIR=%%~dpj"
:: 对应POM文件路径(与JAR同名,扩展名为.pom)
set "POM_PATH=!PARENT_DIR!!FILE_NAME!.pom"
:: 检查POM文件是否存在
if exist "!POM_PATH!" (
:: 同时输出到控制台和日志
echo 正在部署: !JAR_PATH!
echo [INFO] 正在部署: !JAR_PATH! >> "%LOG_FILE%"
:: Maven命令输出重定向到日志(包含错误信息)
cmd /c mvn deploy:deploy-file ^
-Durl=!NEXUS_URL! ^
-DrepositoryId=!REPO_ID! ^
-DpomFile="!POM_PATH!" ^
-Dfile="!JAR_PATH!" >> "%LOG_FILE%" 2>&1
) else (
:: 警告信息同时输出到控制台和日志
echo 警告: POM文件不存在 - !POM_PATH!
echo [WARN] POM文件不存在 - !POM_PATH! >> "%LOG_FILE%"
)
)
:: ... 前面 JAR 部署逻辑保持不变 ...
:: 新增:递归部署独立 POM 文件(无对应 JAR 的 POM)
for /r %%p in (*.pom) do (
:: 获取 POM 文件所在目录和文件名(不含扩展名)
set "POM_PATH_ALONE=%%p"
set "FILE_NAME_POM=%%~np"
set "PARENT_DIR_POM=%%~dp"
:: 检查是否存在对应 JAR 文件
set "JAR_PATH_CHECK=!PARENT_DIR_POM!!FILE_NAME_POM!.jar"
:: 仅当对应 JAR 不存在时,部署独立 POM
if not exist "!JAR_PATH_CHECK!" (
echo 正在部署独立 POM: !POM_PATH_ALONE!
echo [INFO] 正在部署独立 POM: !POM_PATH_ALONE! >> "%LOG_FILE%"
cmd /c mvn deploy:deploy-file ^
-Durl=!NEXUS_URL! ^
-DrepositoryId=!REPO_ID! ^
-DpomFile="!POM_PATH_ALONE!" ^
-Dfile="!POM_PATH_ALONE!" ^
-Dpackaging=pom >> "%LOG_FILE%" 2>&1
)
)
:: ... 后面部署完成逻辑保持不变 ...
:: 完成信息同时输出到控制台和日志
echo 部署完成
echo ============================================== >> "%LOG_FILE%"
echo 部署完成时间: %date% %time% >> "%LOG_FILE%"
echo ============================================== >> "%LOG_FILE%"
endlocal