spring-boot-starter-parent的作用
阿新 • • 發佈:2022-03-22
我們SpringBoot專案pom檔案中都會引入spring-boot-starter-parent這樣一個依賴,如下:
<?xml version="1.0" encoding="UTF-8"?> <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> <groupId>com.ruoyi</groupId> <artifactId>ruoyi</artifactId> <version>2.2.0</version> <packaging>jar</packaging> <name>ruoyi</name> <url>http://www.ruoyi.vip</url><description>若依管理系統</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> <relativePath /> </parent> </project>
那spring-boot-starter-parent的作用是什麼呢?
其實從字面意思上看是spring-boot-starter的一個parent,那就是引入和定義starter相關的東西。
具體來看可以分為以下兩點:
一、統一定義配置:
spring-boot-starter-parent程式碼如下,定義編碼、java版本等:
<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>
二、統一依賴及版本:
spring-boot-starter-parent程式碼如下:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.1.RELEASE</version> <relativePath>../../spring-boot-dependencies</relativePath> </parent>
spring-boot-dependencies程式碼如下:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot</artifactId> <version>2.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> <version>2.1.1.RELEASE</version> </dependency> </dependencyManagement>
<dependencyManagement>中定義了非常多指定版本的依賴,比如上述的redis、quartz等,這樣在具體開發的模組中只需按以下方式引入依賴即可,不必指定版本:
<!-- redis 快取操作 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 定時任務 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> </dependency>
為什麼不必指定版本,參考https://www.cnblogs.com/silenceshining/p/14295807.html。