说说spring-boot-starter-parent

一、spring-boot-starter-parent是什么?

spring-boot-starter-parent是一个特殊的starter,其内置了许多springboot默认的maven依赖。使用spring-boot-starter-parent后,可以省去version标签,方便维护统一的版本。

除此之外,spring-boot-starter-parent中还做了一些设置,

<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的pom文件中并没有dependencyManagement节点,也没有version信息,是因为这些信息是在spring-boot-dependencies中声明的,查看spring-boot-dependencies的pom文件,会有以下内容。

<properties>
    <activemq.version>5.15.12</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.79</appengine-sdk.version>
    <artemis.version>2.10.1</artemis.version>
    <aspectj.version>1.9.5</aspectj.version>
    <assertj.version>3.13.2</assertj.version>
    ...
</properties>
<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot</artifactId>
        <version>2.2.6.RELEASE</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-test</artifactId>
        <version>2.2.6.RELEASE</version>
      </dependency>
      ...
</dependencyManagement>

二、spring-boot-starter-parent如何使用?

1.父工程引入

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
</parent>

优势:可使用spring-boot-starter-parent中的全部配置
弊端:不灵活,只能继承唯一的Parent。如果公司有通用的Parent,只能通过下面这种方式引入

2.正常依赖引入

<dependencyManagement>
      <dependencies>
            <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
      </dependencies>
</dependencyManagement>

优势:灵活。一般公司会有自己通用的Parent。
弊端:无法使用SpringBoot默认的一些配置,需要自己手动配置。

posted @ 2020-12-16 15:42  划破黑夜  阅读(1224)  评论(0编辑  收藏  举报