在這,您將學習瞭解 Spring Boot Starter Parent, 它是 Spring Boot 提供的父級 Pom 文件,旨在提供自動版本依賴管理,幫助我們輕鬆快速地進行 Spring Boot 開發。 什麼是 Spring Boot Starter Parent ? 通過 Spring ...
在這,您將學習瞭解 Spring Boot Starter Parent, 它是 Spring Boot 提供的父級 Pom 文件,旨在提供自動版本依賴管理,幫助我們輕鬆快速地進行 Spring Boot 開發。
什麼是 Spring Boot Starter Parent ?
通過 Spring Boot Starter Parent, 我們可以進行簡單便捷地包依賴管理。在 Spring Boot 每一個發行版中,均提供了該版本所相容的依賴項版本清單。
所以,在開發 Spring Boot 應用時,pom.xml
文件中,我們可以不用指定具體的依賴版本號,因為 Spring Boot Starter Parent 預設會使用自身支持包版本號。
Spring Boot Starter Parent 開始
通過 Spring Initializr 或者使用 Idea 創建一個 Spring Boot 項目時,我們可以看到 pom.xml
文件中包含以下內容:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
</parent>
一旦 pom.xml
文件中包含了上述配置,Spring Boot 應用將預設包含如下功能:
-
1.依賴管理功能(Spring Boot 自動管理包版本依賴) ;
-
2.相關預設值設置:
- 2.1 預設的 Java 版本號;
- 2.2 資源文件編碼格式;
- 2.3 資源過濾等;
-
3.插件管理;
1.1 瞭解 Starter Parent 內部
追蹤到 spring-boot-starter-parent
內部文件,可以看到存在一個 spring-boot-dependencies
的父級 pom
:
文件中定義了應用所有的依賴管理清單,還包括插件和其他相關配置,上面是 pom.xml
大致的樣子:
<properties>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<resource.delimiter>@</resource.delimiter>
<maven.compiler.source>${java.version}</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
屬性部分定義了一些應用程式參數的預設值。如果我們沒有自定義,則預設使用這些值。
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<!-- other execution goals -->
<configuration>
<jvmTarget>${java.version}</jvmTarget>
<javaParameters>true</javaParameters>
</configuration>
</plugin>
<!-- 下麵是其他相關插件-->
</plugins>
<pluginManagement>
1.2 Starter Parent 是如何定義版本號的?
我們繼續深入 pom.xml
文件配置:
windows 平臺按住 ctrl
, 點擊 2.1.2.RELEASE
, 可以看到如下配置內容:
<properties>
<activemq.version>5.15.7</activemq.version>
<antlr2.version>2.7.7</antlr2.version>
<appengine-sdk.version>1.9.67</appengine-sdk.version>
<artemis.version>2.6.3</artemis.version>
<aspectj.version>1.9.2</aspectj.version>
<assertj.version>3.11.1</assertj.version>
<atomikos.version>4.0.6</atomikos.version>
<bitronix.version>2.1.4</bitronix.version>
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
<byte-buddy.version>1.9.3</byte-buddy.version>
<caffeine.version>2.6.2</caffeine.version>
<cassandra-driver.version>3.6.0</cassandra-driver.version>
<!-- 其他版本號配置 ... -->
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
<!-- 其他依賴 ... -->
</dependencies>
</dependencyManagement>
自定義某個依賴的版本號
Spring Boot Starter Parent 為我們為我們處理了版本依賴的問題,所以強烈建議您在項目的 pom.xml
文件繼承它,如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<!-- 從 Spring Boot 中引入版本依賴 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
將 scope
定義為了 import
, 配置完成後,我們就可以自定義某個依賴的版本了:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<!-- 重寫版本號 -->
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
之後,我們可以自定義某個依賴的版本號,以 jpa
為例,我們重寫了預設的版本號,重新定義為我們想要的 2.1.1.RELEASE
版本。
最後
最後,歡迎大家留言,咱們一起討論技術問題,也可以關註我,回覆B01或b01,免費領取java面試題!
本文來自博客園,作者:深碼青年,轉載請註明原文鏈接:https://www.cnblogs.com/shenMaQN/p/17742609.html