SpringBoot項(xiàng)目不繼承parent的實(shí)現(xiàn)方案
引言
當(dāng)項(xiàng)目需要繼承自定義的 parent POM 而不能直接繼承 spring-boot-starter-parent 時(shí),可以通過(guò)以下方式實(shí)現(xiàn) SpringBoot 項(xiàng)目的功能。
一、主要實(shí)現(xiàn)方式
SpringBoot 官方提供了不繼承 parent 的替代方案,主要通過(guò)在 dependencyManagement 中引入 spring-boot-dependencies 來(lái)實(shí)現(xiàn)版本仲裁功能。
二、完整配置示例
1. 基本 POM 配置
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 繼承自定義 parent POM -->
<parent>
<groupId>com.yourcompany</groupId>
<artifactId>your-company-parent</artifactId>
<version>1.0.0</version>
</parent>
<groupId>com.example</groupId>
<artifactId>springboot-without-parent</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<!-- 手動(dòng)配置基礎(chǔ)屬性(原本由 spring-boot-starter-parent 提供) -->
<properties>
<java.version>1.8</java.version>
<resource.delimiter>@</resource.delimiter>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring.boot.version>2.7.0</spring.boot.version>
</properties>
<!-- 引入 Spring Boot 依賴管理 -->
<dependencyManagement>
<dependencies>
<!-- Spring Boot 依賴管理,提供版本仲裁 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 項(xiàng)目依賴 -->
<dependencies>
<!-- Spring Boot Web 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 不需要指定版本,由 dependencyManagement 中的 spring-boot-dependencies 控制 -->
</dependency>
<!-- Spring Boot 測(cè)試依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 配置 Maven 插件 -->
<build>
<plugins>
<!-- Spring Boot Maven 插件,用于打包可執(zhí)行 JAR -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
三、關(guān)鍵說(shuō)明
1. 版本管理
- 當(dāng)不繼承
spring-boot-starter-parent時(shí),需要在dependencyManagement中顯式引入spring-boot-dependencies并使用import范圍 - 這樣可以獲得與繼承 parent 相同的版本仲裁能力,引入 starter 依賴時(shí)無(wú)需指定版本
2. 基礎(chǔ)配置
- 需要手動(dòng)配置原本由 parent 提供的基礎(chǔ)屬性:
- Java 版本
- 編譯參數(shù)
- 編碼格式
- 資源分隔符等
3. 插件配置
- 必須手動(dòng)配置
spring-boot-maven-plugin插件以支持打包功能 - 該插件負(fù)責(zé)將應(yīng)用打包成可執(zhí)行的 JAR 文件
四、適用場(chǎng)景
- 項(xiàng)目需要繼承自定義的 parent POM(如公司內(nèi)部統(tǒng)一的 parent)
- 需要在多個(gè)項(xiàng)目間共享公司級(jí)別的 Maven 配置
- 需要自定義或覆蓋 SpringBoot 默認(rèn)配置
五、注意事項(xiàng)
- 確保
spring-boot-dependencies的版本與項(xiàng)目使用的 SpringBoot 版本一致 - 當(dāng)需要覆蓋特定依賴的版本時(shí),可以在
properties中定義相應(yīng)的版本屬性 - 打包時(shí)確保正確配置了主類,可通過(guò)插件配置指定:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<configuration>
<mainClass>com.example.Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
通過(guò)以上配置,即使不直接繼承 spring-boot-starter-parent,也能正常使用 SpringBoot 的所有核心功能,同時(shí)滿足項(xiàng)目繼承自定義 parent 的需求。
到此這篇關(guān)于SpringBoot項(xiàng)目不繼承parent的實(shí)現(xiàn)方案的文章就介紹到這了,更多相關(guān)SpringBoot項(xiàng)目不繼承parent內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
kafka topic 權(quán)限控制(設(shè)置刪除權(quán)限)
大家都知道Kafka是一個(gè)消息隊(duì)列,把消息放到隊(duì)列里邊的叫生產(chǎn)者,從隊(duì)列里邊消費(fèi)的叫消費(fèi)者。今天通過(guò)本文給大家介紹kafka topic 權(quán)限控制的相關(guān)知識(shí),感興趣的朋友一起看看吧2021-11-11
Java 中實(shí)現(xiàn)隨機(jī)無(wú)重復(fù)數(shù)字的方法
為了更好地理解這個(gè)題意,我們先來(lái)看下具體內(nèi)容:生成一個(gè)1-100 的隨機(jī)數(shù)組,但數(shù)組中的數(shù)字不能重復(fù),即位置是隨機(jī)的,但數(shù)組元素不能重復(fù)2013-03-03
由淺到深帶你詳談Java實(shí)現(xiàn)數(shù)組擴(kuò)容的三種方式
這篇文章主要詳細(xì)介紹了Java實(shí)現(xiàn)數(shù)組擴(kuò)容的三種方式,新建一個(gè)數(shù)組,把原來(lái)數(shù)組的內(nèi)容搬到新數(shù)組中,使用system.arraycopy(),使用java.util.Arrays.copyOf()這三種方式,具有一定的參考價(jià)值,需要的朋友可以借鑒一下2023-06-06
詳解Java集合中的基本數(shù)據(jù)結(jié)構(gòu)
總有小伙伴讓我總結(jié)一下Java集合中的基本數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí),今天特地整理了本篇文章,文中有非常詳細(xì)的介紹,需要的朋友可以參考下2021-06-06
mybatis 自定義實(shí)現(xiàn)攔截器插件Interceptor示例
這篇文章主要介紹了mybatis 自定義實(shí)現(xiàn)攔截器插件Interceptor,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Http Cookie機(jī)制及Cookie的實(shí)現(xiàn)原理
Cookie是進(jìn)行網(wǎng)站用戶身份,實(shí)現(xiàn)服務(wù)端Session會(huì)話持久化的一種非常好方式。Cookie最早由Netscape公司開(kāi)發(fā),現(xiàn)在由 IETF 的RFC 6265標(biāo)準(zhǔn)備對(duì)其規(guī)范,已被所有主流瀏覽器所支持2021-06-06
Java8新特性之lambda(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
這篇文章主要介紹了Java8新特性之lambda(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)表達(dá)式的相關(guān)知識(shí),包括lambda語(yǔ)法方面的知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-06-06

