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

SpringBoot 生产实践:没有父 starter 的打包问题

文章目录

  • 前言
  • 一、搜索引擎
  • 二、Chat GPT
  • 三、官方文档
  • 四、小结
  • 推荐阅读

前言

今天刚准备写点文章,需要 SpringBoot 项目来演示效果。一时心血来潮,没有采用传统的方式(即通过引入 spring-boot-starter-parent 父工程的方式)。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.5</version>
</parent>

而是采用了如下方式引入:

<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.5</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

这样引入在 idea 中使用是正常的。但是,今天当我需要打包的时候却发现:这种方式打出的 jar 包一执行就报:

image.png

此刻,我的心里真是五味杂陈 …

一、搜索引擎

本着内事不决问百度,外事不决问谷歌的优良传统。我立马借助了搜索引擎,可是搜了一圈才发现:这个问题压根就没有人提。果然,麻烦都是自找的。

image.png

仔细想想也是,谁没事放着常用且可靠的方案不用,总是去尝试一些稀奇古怪的方法。

二、Chat GPT

问题出现了,就犹如鱼刺卡在喉咙里,难受至极。于是我就借助了脑子聪明点的 Chat GPT。

image.png

可能是我提问的方式不对,于是我尝试了许多提问词,结果是一无所获。而且越问越生气。我只能感叹一句:人工智能就是人工智能,对于不知道的知识主打一个已读乱回。

三、官方文档

没招了,只好去看那枯燥的官方文档了。官网就是官网,就一个字——专业。

image.png

看到原因之后,我立马在 spring-boot-maven-plugin 中添加了如下的插件执行配置。

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.5</version><!-- 插件执行配置 --><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins>
</build>

之后的打包文件可以正常运行了。

image.png

出于好奇心,我打开了 spring-boot-starter-parentPOM 文件,发现果然有这么一段配置。

image.png

四、小结

根据官网提供的消息,我们可知:本来 spring-boot-maven-plugin 是需要配置一些参数的,但是当我们使用 spring-boot-starter-parent 父工程的时候已经预先配置了一个重新打包的执行 ID,因此只需添加插件定义即可。而如果采用本文这种方式使用 SpringBoot 项目是需要手动配置的。

推荐阅读

  1. 构建安全稳定的应用:Spring Security 实用指南
  2. 深入探究 Spring Boot Starter:从概念到实践
  3. 深入理解 Java 中的 volatile 关键字
  4. Spring 三级缓存
  5. 深入了解 MyBatis 插件:定制化你的持久层框架
http://www.lryc.cn/news/393677.html

相关文章:

  • IDEA配Git
  • 51单片机STC89C52RC——14.1 直流电机调速
  • AI对于高考和IT行业的深远影响
  • C语言下的文件详解
  • Oracle PL / SQL块结构
  • MySQL的安装和启动
  • Prometheus概述
  • 【SQL】什么是最左前缀原则/最左匹配原则
  • java项目配置logback日志
  • Python入门 2024/7/6
  • ChatGPT4深度解析:探索智能对话新境界
  • 触底加载的两种思路(以vue3前端和nodejs后端为例)
  • tobias实现支付宝支付
  • 【音视频 | RTSP】RTSP协议详解 及 抓包例子解析(详细而不赘述)
  • SQL Server 2022 中的 Tempdb 性能改进非常显著
  • C++ Lambda表达式第二篇, Lambda表达式
  • Linux系统的介绍和常用命令
  • IDEA安装IDE Eval Reset插件,30天自动续期,无限激活
  • 【C++】初步认识C++
  • 【Python数据分析与可视化】:使用【Matplotlib】实现销售数据的全面分析 ——【Matplotlib】数模学习
  • Docker加速器配置指南:提升镜像下载速度的秘诀 加速安装Mysql Redis ES
  • 32单片机,C语言与汇编联合编译的几种方式
  • 基于GWO-CNN-BiLSTM数据回归预测(多输入单输出)-灰狼优化算法优化CNN-BiLSTM
  • 自动控制:反馈控制
  • sqlite 数据库 介绍
  • 【机器学习】机器学习重塑广告营销:精准触达,高效转化的未来之路
  • 常见的Java运行时异常
  • CANoe的capl调用Qt制作的dll
  • 论如何搭建属于自己的服务器?
  • 【C++ OpenCV】机器视觉-二值图像和灰度图像的膨胀、腐蚀、开运算、闭运算