java二方包Maven脚本

#!/bin/bash

# 发布的版本号
VERSION="$1"
# 发布的模块名,为null时,deploy整个工程,不为null时,deploy指定的模块及模块依赖的模块
MODULE_NAME="$2"

if [ -n "$VERSION" ]; then
    echo "开始修改pom.xml中版本号为:"${VERSION}
    mvn versions:set -DnewVersion=$VERSION -DprocessAllModules
    if [ $? -ne 0 ];then
        echo "[ERROR] 修改pom.xml版本号失败,详情请看上面日志"
        exit 1
    fi
    mvn versions:commit
    echo "修改pom.xml中版本号完成"
fi

echo "开始编译打包上传......"

if [ "$MODULE_NAME" = "src" ];then
    mvn -U clean deploy -T 1C -Dmaven.compile.fork=true -Dmaven.test.skip=true -Dmaven.install.skip=true -s ../../settings/settings_isv_pro.xml -DaltDeploymentRepository=isv::default::https://xxx/nexus/repository/maven-releases/
elif [ -n "$MODULE_NAME" ];then
    mvn -U clean deploy --also-make -pl ${MODULE_NAME} -T 1C -Dmaven.compile.fork=true -Dmaven.test.skip=true -Dmaven.install.skip=true -s ../../settings/settings_isv_pro.xml -DaltDeploymentRepository=isv::default::https://xxx/nexus/repository/maven-releases/
else
    mvn -U clean deploy -T 1C -Dmaven.compile.fork=true -Dmaven.test.skip=true -Dmaven.install.skip=true -s ../../settings/settings_isv_pro.xml -DaltDeploymentRepository=isv::default::https://xxx/nexus/repository/maven-releases/
fi
if [ $? -ne 0 ];then
    echo "[ERROR]编译打包上传失败,详情请看上面日志"
    exit 1
fi

如何使用?

如下图,mvn-deploy.sh就是脚本文件,把脚本放到项目的目录下。

  • 调整为脚本可执行文件
  • 终端输入:./mvn-deploy.sh 1.0.28 access-boot-autoconfigure
    其中:
  • 1.0.28是版本号,为null时使用项目中写的版本,不为null时,mvn会修改所有pom文件的版本号(注意,pom内容会变更)
  • access-boot-autoconfigure是要deploy的模块,为null时,deploy整个工程,不为null时,deploy指定的模块及模块依赖的模块

在这里插入图片描述

解释说明

命令:mvn -U clean deploy -T 1C -Dmaven.compile.fork=true -Dmaven.test.skip=true -Dmaven.install.skip=true -s ../../settings/settings_isv_pro.xml -DaltDeploymentRepository=isv::default::https://xxx/nexus/repository/maven-releases/

  1. -s:使用 -s 或 --settings 参数来指定要使用的 Maven settings.xml 文件

  2. -DaltDeploymentRepository:指定deploy分发的仓库,其中:

    • ‘isv’表示 distributionManagement 中 repository 元素的 id,如果deploy需要认证,需要与settings.xml文件server的id保持一致
    • ‘default’表示使用默认的传输协议,例如 HTTP、HTTPS 或 SSH;
    • ‘https://xxx/nexus/repository/maven-releases/’表示要将项目部署到的 URL。
    • 这个配置会覆盖pom.xml中的配置,如果不指定,则使用项目的pom文件中配置的distributionManagement。
  3. 如果需要账号密码,并且配置在了settings.xml中,如下,确保id标签与-DaltDeploymentRepository第一个参数保持一致,本例中配置的isv。或者在mvn deploy后指定账号与密码-Dmaven.deploy.username=<username> -Dmaven.deploy.password=<password>

     <server>
          <id>isv</id>
          <username>admin</username>
          <password>nuq7tA4UC11yGtlD</password>
      </server> 
    

k8s的应用

执行上面的脚本,需要把代码down下来,而且每次deploy都需要重复操作down代码。在实际的应用中,你可以这样:每次需要deploy时,部署一个镜像,镜像中执行两个脚本,第一个脚本是自动down代码,第二个就是上面的脚本,只不过脚本需要简单的改造。
我们以默认的maven配置、固定脚本的目录,将脚本变量注入到系统环境变量,这样可以简化变量的声明。

脚本位置

两个脚本放在同一目录:/home/docker/launcher

环境变量

export APP_NAME=
export GIT_URL=
export BRANCH=
export PACKAGE_VERSION=
export MODULE_NAME=

publish.sh

#!/bin/bash
# 二方包发布脚本

#---------环境变量-----------------------------
# 基础目录
BASE_HOME=/home/docker
# 脚本目录
SCRIPT=${BASE_HOME}/launcher
# 工作目录
WORK_HOME=${BASE_HOME}/workspace
# 编译工作目录
CODE_PATH=${WORK_HOME}/compile
#---------环境变量-----------------------------

#--------- 打印环境变量 ------------------------
# 开始时间
date '+%Y-%m-%d %H:%M:%S'
echo "===================环境变量============================="
echo "应用名: "  ${APP_NAME}
echo "代码仓库: "  ${GIT_URL}
echo "分支名: "  ${BRANCH}
echo "打包版本号: "  ${PACKAGE_VERSION}
echo "发布的模块名称: "  ${MODULE_NAME}
echo "======================================================="


init() {
  # 新建代码下载目录
  if [ ! -d ${CODE_PATH} ]; then
    mkdir -p ${CODE_PATH}
  fi
}

download_code() {
  cd ${CODE_PATH}
  rm -rf ${APP_NAME}

  echo "开始下载代码: ${GIT_URL}"
  git clone -b ${BRANCH} ${GIT_URL} ${APP_NAME} --depth 1
  if [ $? -ne 0 ]; then
    echo "[ERROR] git clone 代码失败"
    exit 1
  fi
  cd ${APP_NAME}
  echo -n "下载代码 commit: "
  git rev-parse HEAD
  echo "代码下载完成......"
  # cd ..
}

release() {
  sh ${SCRIPT}/mvn-deploy.sh
  if [ $? -ne 0 ]; then
    echo "tips:上传返回状态码是400时,可能是 maven 仓库已经存在相同版本号的的依赖,不能重复上传 release 包"
    exit 1
  fi
}

echo "开始......"
# 初始化
init
# 下载代码
download_code
# 发布
release

if [ $? -ne 0 ]; then
  echo "[ERROR] 发布失败, 请查看输出日志定位"
  exit 1
else
  echo "发布完成"
  exit 0
fi

mvn-deploy.sh

#!/bin/bash

if [ -n "$PACKAGE_VERSION" ]; then
    echo "开始修改pom.xml中版本号为:"${PACKAGE_VERSION}
    mvn versions:set -DnewVersion=$PACKAGE_VERSION -DprocessAllModules
    if [ $? -ne 0 ];then
        echo "[ERROR] 修改pom.xml版本号失败,详情请看上面日志"
        exit 1
    fi
    mvn versions:commit
    echo "修改pom.xml中版本号完成"
fi

echo "开始编译打包上传......"

if [ "$MODULE_NAME" = "src" ];then
    mvn -U clean deploy -T 1C -Dmaven.compile.fork=true -Dmaven.test.skip=true -Dmaven.install.skip=true
elif [ -n "$MODULE_NAME" ];then
    mvn -U clean deploy --also-make -pl ${MODULE_NAME} -T 1C -Dmaven.compile.fork=true -Dmaven.test.skip=true -Dmaven.install.skip=true
else
    mvn -U clean deploy -T 1C -Dmaven.compile.fork=true -Dmaven.test.skip=true -Dmaven.install.skip=true
fi
if [ $? -ne 0 ];then
    echo "[ERROR] 编译打包上传失败,详情请看上面日志"
    exit 1
fi
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值