理解spring-boot-starter-parent
理解spring-boot-starter-parent
通過spring initializr,我們可以快速構建一個springboot應用,如果你選擇的是Maven來管理專案,在預設的pom檔案中有這麼一個section:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
它表示當前pom檔案從spring-boot-starter-parent繼承下來,在spring-boot-starter-parent中提供了很多預設的配置,這些配置可以大大簡化我們的開發。
Parent Poms Features
通過繼承spring-boot-starter-parent,預設具備瞭如下功能:
- Java版本(Java8)
- 原始碼的檔案編碼方式(UTF-8)
- 依賴管理
- 打包支援
- 動態識別資源
- 識別外掛配置
- 識別不同的配置,如:application-dev.properties 和 application-dev.yml
以上繼承來的特性有的並非直接繼承自spring-boot-starter-parent,而是繼承自spring-boot-starter-parent的父級spring-boot-dependencies
需要特別說明的是,application-dev.properties 和 application-dev.yml支援spring風格的佔位符(${…}),但是Maven專案把對佔位符的支援改為(@..@),可以通過設定Maven屬性resource.delimiter來重置回去。
繼承spring-boot-starter-parent後,大大簡化了我們的配置,它提供了豐富的常用的預設的依賴的版本定義,我們就不需要再次指定版本號:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
假設我們需要定製自己的版本號,可以通過下面的方式重寫:
<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>
不繼承spring-boot-starter-parent構建springboot專案
有時候專案可能有自己的parent poms,Maven只允許定義一個parent pom,這時的專案雖然沒有繼承自spring-boot-starter-parent,但是依賴管理始終需要的,可以通過如下配置引入spring-boot-dependencies的依賴管理功能:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
那麼在這種情況下要重寫依賴的版本號就需要用另外的方式:
<dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
除了依賴管理,打包也是需要的:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.0.RELEASE</version>
<configuration>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
增加以上配置後就可以使用熟悉的mvn pacakge成一個jar了。
相關文章
- 出現錯誤 Project ‘org.springframework.boot:spring-boot-starter-parent’ not foundProjectSpringFrameworkboot
- 理解 this
- 理解sizeof
- ThreadLocal理解thread
- YYCache理解
- 理解ContextContext
- 理解MeasureSpec
- 理解TypeScriptTypeScript
- BFC理解
- 理解BFC
- pm 理解
- LSTM理解
- Socket理解
- Socket 理解
- zookeeper理解
- Runtime理解
- 理解haslayout
- 理解 HTTPHTTP
- 理解CSSCSS
- 理解CAS
- MapReduce理解
- 理解SpingAOP
- Android Https 理解AndroidHTTP
- 如何理解Axis?
- 全面理解GitGit
- 理解 HandlerThread 原理thread
- React Diff理解React
- 理解 React HooksReactHook
- 理解Android BitmapAndroid
- 理解原型鏈原型
- 理解 AsyncTask 原理
- 理解 IntentService 原理Intent
- 如何理解nexus
- RAC的理解
- 理解RESTful概念REST
- Reactor模式理解React模式
- 理解索引(上)索引
- isNaN的理解NaN