当前位置: 首页 > news >正文

springboot应用使用shell脚本打包成部署压缩包(支持xjar)

项目目录结构

如果没有用 xjar,那就没有 xjar.go、app.xjar

app-project|-deploy/|-build.sh|-app-server.sh|-src/|-target/|-app.jar|-app.xjar|-xjar.go......

目标目录结构

如果没有用 xjar,那就没有 xjar、app.xjar

app|-version.txt|-bin/|-app-server.sh|-app.jar|-app.xjar|-xjar|-config/|-application.yml|-logs/|-workspace/

app-server.sh 内容看 java 应用启动脚本

打包脚本 build.sh(xjar 版本)

使用方法:

  • 打包当前操作系统下的 xjar:build.sh
  • 打包 amd64 架构的 linux 下的 xjar:build.sh linux amd64

build.sh

#!/bin/bashBASE_DIR=`cd "$(dirname "$0")"; pwd`DIST_DIR_NAME="app-dist"
DIST_DIR_PATH=$BASE_DIR/../target/$DIST_DIR_NAMEif [ -d "$DIST_DIR_PATH" ]; thenrm -rf $DIST_DIR_PATH
ficd $BASE_DIR/../target# 找golang当前所在系统信息
DEFAULT_OS=`go env | grep GOHOSTOS | awk -F '=' '{print $2}'`
DEFAULT_ARCH=`go env | grep GOHOSTARCH | awk -F '=' '{print $2}'`OS="$1"
ARCH="$2"if [ -z "$OS" ]; thenOS="$DEFAULT_OS"
fi
if [ -z "$ARCH" ]; thenARCH="$DEFAULT_ARCH"
fiecho "编译xjar..."
export GOOS=$OS
export GOARCH=$ARCH
go build ./xjar.gomkdir -p $DIST_DIR_PATH/bin $DIST_DIR_PATH/config $DIST_DIR_PATH/workspace
if [[ "$OS" == "windows" ]]; thencp ./xjar.exe $DIST_DIR_PATH/bin/xjar.exe
elsecp ./xjar $DIST_DIR_PATH/bin/xjarchmod 755 $DIST_DIR_PATH/bin/xjar
ficp ./*.jar $DIST_DIR_PATH/bin/
cp ./*.xjar $DIST_DIR_PATH/bin/
cp ../deploy/app-server.sh $DIST_DIR_PATH/bin/
chmod 755 $DIST_DIR_PATH/bin/app-server.shcp ../src/main/resources/application.yml $DIST_DIR_PATH/config/application.yml# 将当前git分支信息填入 version.txt
BRANCH_NAME=$(git branch --show-current)
COMMIT_HASH=$(git rev-parse --short HEAD)
COMMIT_TIME=$(git show -s --format=%ci HEAD)
CURRENT_TAG=$(git describe --tags --exact-match)
RET=$?COMMIT_INFO=$COMMIT_HASH
if [ $RET -eq 0 ]; thenCOMMIT_HASH=$CURRENT_TAG
elseCURRENT_TAG=""
fi
echo "os: $OS" > $DIST_DIR_PATH/version.txt
echo "arch: $ARCH" >> $DIST_DIR_PATH/version.txt
echo "branch_name: $BRANCH_NAME" >> $DIST_DIR_PATH/version.txt
echo "commit_hash: $COMMIT_HASH" >> $DIST_DIR_PATH/version.txt
echo "current_tag: $CURRENT_TAG" >> $DIST_DIR_PATH/version.txt
echo "commit_time: $COMMIT_TIME" >> $DIST_DIR_PATH/version.txtecho ""
echo "当前版本信息:"
cat $DIST_DIR_PATH/version.txt
echo ""echo "打包$DIST_DIR_PATH-$COMMIT_INFO-$OS-$ARCH.tar.gz..."
tar -zcf $DIST_DIR_PATH-$COMMIT_INFO-$OS-$ARCH.tar.gz $DIST_DIR_NAME
echo "打包成功!"

打包脚本 build.sh(非 xjar 版本)

build.sh

#!/bin/bashBASE_DIR=`cd "$(dirname "$0")"; pwd`DIST_DIR_NAME="app-dist"
DIST_DIR_PATH=$BASE_DIR/../target/$DIST_DIR_NAMEif [ -d "$DIST_DIR_PATH" ]; thenrm -rf $DIST_DIR_PATH
ficd $BASE_DIR/../targetmkdir -p $DIST_DIR_PATH/bin $DIST_DIR_PATH/config $DIST_DIR_PATH/workspacecp ./*.jar $DIST_DIR_PATH/bin/
cp ../deploy/app-server.sh $DIST_DIR_PATH/bin/
chmod 755 $DIST_DIR_PATH/bin/app-server.shcp ../src/main/resources/application.yml $DIST_DIR_PATH/config/application.yml# 将当前git分支信息填入 version.txt
BRANCH_NAME=$(git branch --show-current)
COMMIT_HASH=$(git rev-parse --short HEAD)
COMMIT_TIME=$(git show -s --format=%ci HEAD)
CURRENT_TAG=$(git describe --tags --exact-match)
RET=$?COMMIT_INFO=$COMMIT_HASH
if [ $RET -eq 0 ]; thenCOMMIT_HASH=$CURRENT_TAG
elseCURRENT_TAG=""
fi
echo "branch_name: $BRANCH_NAME" >> $DIST_DIR_PATH/version.txt
echo "commit_hash: $COMMIT_HASH" >> $DIST_DIR_PATH/version.txt
echo "current_tag: $CURRENT_TAG" >> $DIST_DIR_PATH/version.txt
echo "commit_time: $COMMIT_TIME" >> $DIST_DIR_PATH/version.txtecho ""
echo "当前版本信息:"
cat $DIST_DIR_PATH/version.txt
echo ""echo "打包$DIST_DIR_PATH-$COMMIT_INFO.tar.gz..."
tar -zcf $DIST_DIR_PATH-$COMMIT_INFO.tar.gz $DIST_DIR_NAME
echo "打包成功!"
http://www.xdnf.cn/news/165997.html

相关文章:

  • AI心理健康服务平台项目面试实战
  • 使用Xshell中自带的传输新建文件功能实现上传下载文件
  • 树相关处理
  • UniApp 的现状与 WASM 支持的迫切性
  • w308汽车销售系统的设计与实现
  • 腾讯CSIG一面
  • 05--Altium Designer(AD)的详细安装
  • SM30 权限检查
  • 高中数学联赛模拟试题精选第18套几何题
  • GPU加速-系统CUDA12.5-Windows10
  • cron定时任务
  • Linux | Mfgtools 修改单独只烧写 Uboot,内核,文件系统
  • 前端面试宝典---vue实现简化版
  • PCL点云处理之基于SAC-IA和ICP的点云配准完整流程(二百四十七)
  • 2025.04.26-美团春招笔试题-第一题
  • java中的Selector详解
  • Qt开发:QSettings的介绍和使用
  • JDK环境变量
  • 备忘录模式 (Memento Pattern)
  • Java 自定义TCP协议:【特点编码字符串<=>字节<=>特点编码16进制】16进制字符串和编码的转换 (各种编码通过字节向16进制的互转)| XOR计算
  • dubbo 异步化实践
  • 【MFA】✈️集成谷歌TOTP实现MFA多因素认证
  • 数组的多种声明方式:类型标注与泛型数组
  • 做大模型应用所需的一点点基础数学理论
  • 扩展和自定义 asammdf 库:满足特定需求的解决方案
  • 文章记单词 | 第46篇(六级)
  • 深度学习中的预训练与微调:从基础概念到实战应用全解析
  • Threejs中顶视图截图
  • javase和java有什么区别
  • spring响应式编程系列:异步生产数据