SpringBoot 生产实践:没有父 starter 的打包问题
前言
今天刚准备写点文章,需要 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
包一执行就报:
此刻,我的心里真是五味杂陈 …
一、搜索引擎
本着内事不决问百度,外事不决问谷歌的优良传统。我立马借助了搜索引擎,可是搜了一圈才发现:这个问题压根就没有人提。果然,麻烦都是自找的。
仔细想想也是,谁没事放着常用且可靠的方案不用,总是去尝试一些稀奇古怪的方法。
二、Chat GPT
问题出现了,就犹如鱼刺卡在喉咙里,难受至极。于是我就借助了脑子聪明点的 Chat GPT。
可能是我提问的方式不对,于是我尝试了许多提问词,结果是一无所获。而且越问越生气。我只能感叹一句:人工智能就是人工智能,对于不知道的知识主打一个已读乱回。
三、官方文档
没招了,只好去看那枯燥的官方文档了。官网就是官网,就一个字——专业。
看到原因之后,我立马在 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>
之后的打包文件可以正常运行了。
出于好奇心,我打开了 spring-boot-starter-parent
的 POM
文件,发现果然有这么一段配置。
四、小结
根据官网提供的消息,我们可知:本来 spring-boot-maven-plugin
是需要配置一些参数的,但是当我们使用 spring-boot-starter-parent
父工程的时候已经预先配置了一个重新打包的执行 ID,因此只需添加插件定义即可。而如果采用本文这种方式使用 SpringBoot 项目是需要手动配置的。
推荐阅读
- 构建安全稳定的应用:Spring Security 实用指南
- 深入探究 Spring Boot Starter:从概念到实践
- 深入理解 Java 中的 volatile 关键字
- Spring 三级缓存
- 深入了解 MyBatis 插件:定制化你的持久层框架
原文地址:https://blog.csdn.net/LearnerDL/article/details/140233412
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!