前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring boot 中的 Parent POM 和 Starter 的作用什么?(☆☆☆)

spring boot 中的 Parent POM 和 Starter 的作用什么?(☆☆☆)

作者头像
水货程序员
修改2018-12-03 15:06:17
3.5K0
修改2018-12-03 15:06:17
举报
文章被收录于专栏:javathingsjavathings

spring boot 中的 Parent POM 和 Starter 的作用什么?(☆☆☆)

Parent POM

spring boot 推荐在 maven 中,继承 spring-boot-starter-parent 来作为父项目。因为继承 spring-boot-starter-parent 项目,就获得一些合理的默认配置。使用这个 pom,可以统一项目中的版本依赖,从而避免了潜在的版本冲突。这个 parent 提供了以下特性:

代码语言:javascript
复制
Java
● 默认使用Java 8
● 使用UTF-8编码
● 一个引用管理的功能,在dependencies里的部分配置可以不用填写version信息,这些version信息会从spring-boot-dependencies里得到继承。
● 识别资源过滤(Sensible resource filtering.)
● 识别插件的配置(Sensible plugin configuration (exec plugin, surefire, Git commit ID, shade).)● 能够识别application.properties和application.yml类型的文件,同时也能支持profile-specific类型的文件(如: application-foo.properties and application-foo.yml,这个功能可以更好的配置不同生产环境下的配置文件)。
 
摘自官方文档

Maven 配置如下:

代码语言:javascript
复制
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

通过代码跟踪方式,跟踪到这个 pom 的 parent,一直到 Spring Boot Dependencies 这个 POM 文件,可以看到如下的版本信息 (部分摘要)

代码语言:javascript
复制
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.3.RELEASE</version>
<packaging>pom</packaging>
<name>Spring Boot Dependencies</name>
 
……
……
……
……
<properties>
……
……
        <gson.version>2.8.5</gson.version>
        <h2.version>1.4.197</h2.version>
        <hamcrest.version>1.3</hamcrest.version>
        <hazelcast.version>3.9.4</hazelcast.version>
        <hazelcast-hibernate5.version>1.2.3</hazelcast-hibernate5.version>
        <hibernate.version>5.2.17.Final</hibernate.version>
        <hibernate-jpa-2.1-api.version>1.0.2.Final</hibernate-jpa-2.1-api.version>
        <hibernate-validator.version>6.0.10.Final</hibernate-validator.version>
        <hikaricp.version>2.7.9</hikaricp.version>
        <hsqldb.version>2.4.1</hsqldb.version>
        <htmlunit.version>2.29</htmlunit.version>
        <httpasyncclient.version>4.1.3</httpasyncclient.version>
        <httpclient.version>4.5.5</httpclient.version>
        <httpcore.version>4.4.9</httpcore.version>
        <infinispan.version>9.1.7.Final</infinispan.version>
        <influxdb-java.version>2.9</influxdb-java.version>
        <jackson.version>2.9.6</jackson.version>
        <janino.version>3.0.8</janino.version>
        <javax-annotation.version>1.3.2</javax-annotation.version>
        <javax-cache.version>1.1.0</javax-cache.version>
        <javax-jaxb.version>2.3.0</javax-jaxb.version>
……
……
    </properties>

某些场景下,不希望使用 parent pom。那么就需要用的 scope 的 import 配置。

代码语言:javascript
复制
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

注意:import scope 只能用在 dependencyManagement 里面。

Maven 中的 dependencyManagement 管理了所有依赖的版本号。

在 dependencyManagement 元素中声明 jar 包的版本信息,那么子项目再次引用相应 jar 包时则无需指定版本号。Maven 会沿着父子层级向上寻找 dependencyManagement 元素,然后使用其指定的版本号。

<scope>import</scope> 设置从其它的 pom 文件中导入依赖设置。

上例中,设置了相关的依赖从 spring-boot-dependencies 这个 pom 中导入。

Starter

Spring Boot 提供了一组“Starters” ,格式如: spring-boot-starter-XXX。例如:spring-boot-starter-web,spring-boot-starter-data-elasticsearch。

这些 Starters 是一组约定好的依赖,给用户提供一站式的方便,只需要依赖这一个包,就等于依赖了一组相关的包。

举个例子:

用 SpringBoot 开发 web 的时候,一般引用 spring-boot-starter-web,spring-boot-starter-web 帮我们自动引入了如下 5 个包:

spring-boot-starter

spring-boot-starter-json

spring-boot-starter-tomcat

hibernate-validator

spring-web

spring-webmvc

可以从官方文档查看,也可根据 maven 命令$ mvn dependency:tree 查看

官方提供的 Spring Boot 预定义的 starter 可以去官网查看:

https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/#using-boot-starter

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • spring boot 中的 Parent POM 和 Starter 的作用什么?(☆☆☆)
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档