将本地.m2 jar上传的私有maven库

将脚本放到被传包的指定目录里, 如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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容