shell脚本自动发布Java应用

单体项目或定制化小应用,频繁发布会有些麻烦,用脚本实现git提交完代码自动发布,并完成jar包备份

1.前提条件:linux安装了JDK、Maven、Git

安装参考链接:

jdk安装

https://blog.csdn.net/weixin_44904239/article/details/137240064

git安装

https://blog.csdn.net/weixin_44966641/article/details/119791118

maven安装

https://blog.csdn.net/m0_52985087/article/details/136155283

2.使用mkdir建立项目目录,如 mkdir /usr/local/project/hope-ipcc-web/

touch web.sh

vim web.sh

打开脚本

bash 复制代码
#!/bin/bash
APP_NAME="hope-ipcc-web"  # 替换为您的应用名称
JAR_NAME="${APP_NAME}-1.0-SNAPSHOT.jar"  # 替换为您的 JAR 文件名称
MAVEN_OPTS="-DskipTests"  # Maven 打包选项,跳过测试
APP_DIR="/usr/local/project/hope-ipcc-web"  # 替换为您的应用目录



# 查找占用特定端口的进程
netstat -tuln | grep ':8026'

# 查找并停止进程
PID=$(netstat -tulnp | grep ':8026' | awk '{print $7}' | cut -d'/' -f1)
if [ -n "$PID" ]; then   
    kill $PID
    echo "删除成功..."

fi


echo "正在拉取git代码..."
# 克隆或更新代码
git clone your git address

cp hope-ipcc-web-1.0-SNAPSHOT.jar  /usr/local/project/hope-ipcc-web/hope-ipcc-web-1.0-SNAPSHOT-back.jar


# 使用 Maven 打包
echo "使用 Maven 打包..."

cd  hope-ipcc-parent/

mvn clean package -DskipTests -Denv=test -am -pl hope-ipcc-web

echo "进入web目录..."

cd  /usr/local/project/hope-ipcc-web/hope-ipcc-parent/hope-ipcc-web/target

mv hope-ipcc-web-1.0-SNAPSHOT.jar  /usr/local/project/hope-ipcc-web/

cd  /usr/local/project/hope-ipcc-web/
# 启动新的 Java 应用
echo "启动新的 Java 应用..."
nohup java -jar "/usr/local/project/hope-ipcc-web/$JAR_NAME"   --spring.profiles.active=test   > /usr/local/project/hope-ipcc-web/web.log 2>&1 &

rm -rf  /usr/local/project/hope-ipcc-web/hope-ipcc-parent

退出后使用 chmod + x web.sh,让这个脚本成为linux可执行的shell,然后在目录下执行./web.sh

最后效果图

然后使用ps -ef | grep java,查看Java进程

项目启动成功

相关推荐
2301_7807896638 分钟前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
第九序言T1 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
学长毕设2 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn2 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川2 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵2 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
程序喵大人2 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
秋天的怀念_David3 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1003 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin3 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php