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

SpringBoot外部配置打包

✨重磅!盹猫的个人小站正式上线啦~诚邀各位技术大佬前来探秘!✨

这里有:

  • 硬核技术干货:编程技巧、开发经验、踩坑指南,带你解锁技术新姿势!
  • 趣味开发日常:代码背后的脑洞故事、工具测评,让技术圈不再枯燥~
  • 独家资源分享:开源项目、学习资料包,助你打怪升级快人一步!

👉 点击直达→ 盹猫猫的个人小站 👈
🌟 来逛逛吧,说不定能挖到你正在找的技术宝藏哦~

目录

🔥 前言

🍃 环境准备

📖 版本

⬆️ 方法

⚡ 复制配置(安装等)文件

⚡ 安装服务

⭕ 总结


欢迎来到 盹猫(>^ω^<)的博客

本篇文章主要介绍了

[SpringBoot外部配置打包]
❤博主广交技术好友,喜欢文章的可以关注一下❤

🔥 前言

        在SpringBoot开发时,在项目开发完成后,打包发布是必不可少的过程(jar,原生执行文件,dockerfile等),但打包也是有一些技巧存在的,面对纷繁复杂的部署环境,我们不能只会打一个jar包,更要懂得在如何部署时更方便运行和修改。

本篇文章就是记录打包为外部配置包的技巧。

🍃 环境准备

📖 版本

名称版本
JDK21
SpringBoot3.5.6

注:这里也可以是其它版本,不强制要求。

⬆️ 方法

⚡ 复制配置(安装等)文件

        有人可能会说了,复制文件,这有什么技巧,我直接复制不就行了(有手就行)。如果是这样,你可能有些out了,既然是用Maven命令打包jar包当然是希望在打包的过程中复制文件到目标目录了。

        首先需要在pom中添加maven-resources-plugin依赖,内容如下:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.3.1</version><executions><execution> <!-- 复制配置文件 --><id>copy-resources</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><resources><resource><directory>src/main/resources</directory><includes><include>application.yml</include><include>application-*.yml</include><include>install.sh</include></includes></resource></resources><outputDirectory>${project.build.directory}</outputDirectory></configuration></execution></executions>
</plugin>

在上述pom文件中实现的功能是:

当运行mvn package命令时,将src/main/resources 目录下的

  • application.yml
  • application-*.yml
  • install.sh

文件复制到目标${project.build.directory}(target)目录下。

这样再有一些其它文件需要跟随打包的jar包一起复制时,只需要修改pom文件即可。

⚡ 安装服务

这里有个install.sh文件也一起复制过去的作用是:

可以快速的安装当前jar包为服务,毕竟谁也不想每次都使用java命令启动程序,这很不方便。

脚本内容如下:

#! /bin/shWORD_DIR=$(cd $(dirname $0); pwd)
SERVICE_NAME="cat-service"# 检查是否为 root 用户
if [ "$(id -u)" -ne 0 ]; thenecho "提示: 建议使用 root 用户执行此脚本,否则可能权限不足!"read -p "继续?(y/n) " -n 1 -rif [[ ! $REPLY =~ ^[Yy]$ ]]; thenexit 1fiecho
fi# 当前目录直接搜索(不含子目录)
jar_files=(*.jar)if [ ${#jar_files[@]} -eq 0 ]; thenecho "当前目录无 JAR 文件!"exit 1
fi# 遍历结果
for jar in "${jar_files[@]}"; doecho "找到 JAR 文件: $jar"
done# 写文件
# 生成 Systemd 服务文件内容
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
cat << EOF | sudo tee "$SERVICE_FILE" > /dev/null
[Unit]
Description=${SERVICE_NAME}
After=syslog.target[Service]
User=$USER
WorkingDirectory=${WORD_DIR}
ExecStart=java -jar ${jar_files}
SuccessExitStatus=143
Restart=on-failure
RestartSec=10s
Environment=SPRING_PROFILES_ACTIVE=prod[Install]
WantedBy=multi-user.target
EOF# 重载 Systemd 并启动服务
sudo systemctl daemon-reload
sudo systemctl enable "$SERVICE_NAME"
sudo systemctl start "$SERVICE_NAME"# 验证服务状态
echo "服务已安装!执行以下命令查看状态:"
echo "sudo systemctl status $SERVICE_NAME"

脚本里只需要修改下服务的名称即可使用,拿来就用。

⭕ 总结

          这里只是举了一个简单的例子,通过使用maven-resources-plugin依赖去复制配置文件和相关自定义的快速安装程序,即可完成JAR包的外部配置和快速启动。

        当然,这不是规定,你也可以自己去创建一些其它快速部署的脚本进行项目的快速部署和启动。

上面就是所有配置信息了,如果内容对你有帮助,麻烦留一个赞👍和收藏⭐支持一下!


如果你对区块链内容感兴趣可以查看我的专栏:小试牛刀-区块链

感谢您的关注和收藏!!!!!!

http://www.dtcms.com/a/499137.html

相关文章:

  • 通达信--超级盘口
  • 基于单片机的开尔文电路电阻测量WIFI上传设计
  • 矽塔 SA8210 输入耐压36V 6A过流保护阈值 过压/过流保护芯片 SOT23-6/DFN2X2-8
  • 永年做网站收集链接 做网站
  • Linux----权限
  • 深入理解 PHP 框架里的设计模式
  • 西安网站工作室做外贸网站哪家的好
  • 如何用python写一个有字数上限的文字区块链?
  • 算能 CV184 智能相机整体方案介绍
  • 广州皮具网站建设湖南手机版建站系统信息
  • 大型网站建设哪里济南兴田德润实惠吗临沂市网站建设公司
  • Linux系统:线程介绍与POSIX线程库实现线程控制
  • ITP新增安全测试模块:构建自动化安全防护体系
  • 【C++/Lua联合开发】 (二) Lua调用C++函数
  • 基于Simulink的混动汽车模型建模与仿真,包含发动机管理,电机,电池管理以及混动汽车物理模型等
  • 网站备案都需要什么网站群项目建设实施进度计划
  • 数据库的事务和索引
  • W5500 esp32 micropython 驱动测试 网线直连电脑静态IP设置
  • 1panel docker开启swap内存
  • 动态规划的“降维”艺术:二维矩阵中的建筑奇迹——最大矩形
  • switch语句在汇编层面的几种优化方式 ,为什么能进行优化
  • Apache Spark算法开发指导-特征转换VectorIndexer
  • 企业网站的高跳出率应该如何解决广州物流网站开发
  • Docker 与 K8s 网络模型全解析
  • 【算法与数据结构】拓扑排序实战(栈+邻接表+环判断,附可运行代码)
  • AWS Elastic Load Balancing(ELB)—— 多站点负载均衡的正确打开方式
  • 如何用域名建网站主流建站公司
  • 企业网站模板源代码jz做网站
  • 深入 Spring 内核:解密 15 种设计模式的实战应用与底层实现
  • 【S32K3XX系列MCAL配置-第一节开发环境搭建】