spring-boot-starter-parent的作用
我们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。