解析spring-boot-starter-parent简介

本指南将帮助您了解Spring Boot Starter Parent如何帮助管理依赖项版本,所有Spring Boot项目通常使用spring-boot-starter-parent作为pom.xml中的父项:

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

Parent Poms为多个子项目和模块管理以下内容:

  • 配置 - Java版本和其他属性
  • Depedency Management - 依赖项的版本
  • 默认插件配置

内部原理

首先 启动器Spring Boot Starter Parent将spring-boot-dependencies定义为父pom。它从spring-boot-dependencies继承了依赖关系管理。

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>1.4.0.RELEASE</version>
  <relativePath>../../spring-boot-dependencies</relativePath>
</parent>

默认的java版本是1.6。项目可以通过<java.version>1.8</java.version>在项目pom中指定属性来覆盖它。还有一些与编码和源相关的其他设置,目标版本也在父pom中设置。

<java.version>1.6</java.version>
<resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>

Spring Boot Starter Parent指定了一系列插件的默认配置,包括maven-failsafe-plugin,maven-jar-plugin和maven-surefire-plugin。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-failsafe-plugin</artifactId>
  <executions>
   <execution>
     <goals>
      <goal>integration-test</goal>
      <goal>verify</goal>
     </goals>
   </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
   <archive>
     <manifest>
      <mainClass>${start-class}</mainClass>
      <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
     </manifest>
   </archive>
  </configuration>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
   <includes>
     <include>**/*Tests.java</include>
     <include>**/*Test.java</include>
   </includes>
   <excludes>
     <exclude>**/Abstract*.java</exclude>
   </excludes>
  </configuration>
</plugin>

Spring Boot Starter Parent从spring-boot-dependencies继承了什么?

Spring Boot Dependencies定义了所有Spring Boot项目的默认依赖关系管理。如果我们想要使用特定依赖项的新版本,我们可以通过在项目pom中指定新属性来覆盖该版本。下面的摘录显示了由Spring Boot Dependencies父pom管理的一些重要依赖项。由于Spring Boot Starter Parent继承自spring-boot-dependencies,因此它也共享所有这些特性。

<properties>
  <activemq.version>5.13.4</activemq.version>
     ...
  <ehcache.version>2.10.2.2.21</ehcache.version>
  <ehcache3.version>3.1.1</ehcache3.version>
     ...
  <h2.version>1.4.192</h2.version>
  <hamcrest.version>1.3</hamcrest.version>
  <hazelcast.version>3.6.4</hazelcast.version>
  <hibernate.version>5.0.9.Final</hibernate.version>
  <hibernate-validator.version>5.2.4.Final</hibernate-validator.version>
  <hikaricp.version>2.4.7</hikaricp.version>
  <hikaricp-java6.version>2.3.13</hikaricp-java6.version>
  <hornetq.version>2.4.7.Final</hornetq.version>
  <hsqldb.version>2.3.3</hsqldb.version>
  <htmlunit.version>2.21</htmlunit.version>
  <httpasyncclient.version>4.1.2</httpasyncclient.version>
  <httpclient.version>4.5.2</httpclient.version>
  <httpcore.version>4.4.5</httpcore.version>
  <infinispan.version>8.2.2.Final</infinispan.version>
  <jackson.version>2.8.1</jackson.version>
     ....
  <jersey.version>2.23.1</jersey.version>
  <jest.version>2.0.3</jest.version>
  <jetty.version>9.3.11.v20160721</jetty.version>
  <jetty-jsp.version>2.2.0.v201112011158</jetty-jsp.version>
  <spring-security.version>4.1.1.RELEASE</spring-security.version>
  <tomcat.version>8.5.4</tomcat.version>
  <undertow.version>1.3.23.Final</undertow.version>
  <velocity.version>1.7</velocity.version>
  <velocity-tools.version>2.0</velocity-tools.version>
  <webjars-hal-browser.version>9f96c74</webjars-hal-browser.version>
  <webjars-locator.version>0.32</webjars-locator.version>
  <wsdl4j.version>1.6.3</wsdl4j.version>
  <xml-apis.version>1.4.01</xml-apis.version>
</properties>

将Maven 3.2.1定义为所需的最低版本:

<prerequisites>
  <maven>3.2.1</maven>
</prerequisites>

Spring Boot

总结

以上所述是小编给大家介绍的spring-boot-starter-parent简介,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Spring Boot 自定义starter的示例代码

    SpringBoot 个人感觉特点: 1)众多库的集合(各种Starter),方便快速构建应用系统. 2)自动配置spring(通过AutoConfiguration机制),简化配置,也方便扩展新的Starter. 3)内嵌web容器,无需WAR部署. 创建一个用maven构建的springboot项目 pom文件配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht

  • 深入浅析Spring-boot-starter常用依赖模块

    Spring-boot的2大优点: 1.基于Spring框架的"约定优先于配置(COC)"理念以及最佳实践之路. 2.针对日常企业应用研发各种场景的Spring-boot-starter自动配置依赖模块,且"开箱即用"(约定spring-boot-starter- 作为命名前缀,都位于org.springframenwork.boot包或者命名空间下). 应用日志和spring-boot-starter-logging 常见的日志系统大致有:java.util默认提

  • Spring Boot Starters简介及其优劣势

    简介 在启动任何项目(无论是小型项目还是企业级应用程序)之前,其中关键的方面之一是依赖管理,手动为小型应用程序执行依赖管理并不是一项困难的工作,但对于复杂的应用程序,手动管理所有项目依赖并不理想,容易出现许多问题以及浪费时间,而这些时间可以用于项目的其他一些重要方面. Spring Boot背后的基本原理之一就是解决类似的问题.Spring Boot Starter是一套方便的依赖描述符,可以很容易地包含在任何级别的应用程序中.这些Starters作为Spring相关技术的引导过程,我们 不再需

  • spring boot 自定义starter的实现教程

    spring boot 使用 starter 解决了很多配置问题, 但是, 他是怎么来解决这些问题的呢? 这里通过一个简单的例子, 来看一下, starter是怎么来设置默认配置的. 一. 建 starter 项目 自定义的starter, 项目命名规范是: 自定义名-spring-boot-starter 先来看一下, 我最后的目录结构 1. 修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns

  • 深入浅析 Spring Boot Starter

    Spring Boot 简介 Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西.因此就有了Spring Boot框架,它的作用很简单,就是帮我们自动配置.Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置.如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置.另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序. 依赖管理是任何复杂项目的关键部

  • SpringBoot自定义starter实例代码

    一.简介 SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景启动器),我们通过引入SpringBoot 为我提供的这些场景启动器,我们再进行少量的配置就能使用相应的功能.即使是这样,SpringBoot也不能囊括我们所有的使用场景,往往我们需要自定义starter,来简化我们对SpringBoot的使用. 下面话不多说了,来一起看看详细的介绍吧 二.如何自定义starter 1.实例 如何编写自动配置 ? 我们参照@WebMvcAutoConfigurati

  • 详解spring boot starter redis配置文件

    spring-boot-starter-Redis主要是通过配置RedisConnectionFactory中的相关参数去实现连接redis service. RedisConnectionFactory是一个接口,有如下4个具体的实现类,我们通常使用的是JedisConnectionFactory. 在spring boot的配置文件中redis的基本配置如下: # Redis服务器地址 spring.redis.host=192.168.0.58 # Redis服务器连接端口 spring.

  • 深入解析Spring Boot 的SPI机制详情

    目录 简介 Java SPI实现 示例说明 创建动态接口 实现类1 实现类2 相关测试 运行结果 源码分析 Spring SPI Spring 示例 定义接口 相关实现 相关测试类 输出结果 源码分析 总结 简介 SPI(Service Provider Interface)是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要用于框架中开发,例如Dubbo.Spring.Common-Logging,JDBC等采用采用SPI机制,针对同一接口采用不同的实现提供给不同的用户,从

  • spring boot starter actuator(健康监控)配置和使用教程

    添加POM依赖: <!-- spring-boot-监控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.bo

  • 关于idea引入spring boot <parent></parent>父依赖标红问题

    一.问题说明 偶然换了下spring boot的版本号,结果idea一直标红,报该父依赖一直找不到. 但是当我查看引入的依赖时,版本号已经变成2.2.7.RELEASE了,而且还有提示该依赖在本地仓库的位置,如下: 说明版本号为2.2.7.RELEASE的依赖确实已经下载到了maven本地仓库,在本地仓库中也能找到该依赖,所以这肯定是idea显示的问题. 当我把idea中spring boot版本换为上图中的之前已下载的2.2.3.RELEASE版本时,又不报错了,如下: 因此可以推断,idea

  • 如何手写一个Spring Boot Starter

    何为 Starter ? 想必大家都使用过 SpringBoot,在 SpringBoot 项目中,使用最多的无非就是各种各样的 Starter 了.那何为 Starter 呢?你可以理解为一个可拔插式的插件(组件).或者理解为场景启动器. 通过 Starter,能够简化以前繁杂的配置,无需过多的配置和依赖,它会帮你合并依赖,并且将其统一集成到一个 Starter 中,我们只需在 Maven 或 Gradle 中引入 Starter 依赖即可.SpringBoot 会自动扫描需要加载的信息并启动

  • 手撸一个Spring Boot Starter并上传到Maven中央仓库

    目录 打包上传到中央仓库 第一步 在issues.sonatype.org注册一个账号 第二步 在issues.sonatype.org提交Issue 第三步 配置Maven Setting.xml 第四步 配置项目的pom.xml 第五步 安装和配置GPG 第六步 项目打包上传 第七步 处理验证 问题 我1.0.1版本发布错了,有办法修改或者删除吗? 先手撸一个Spring Boot Starter 准备搞个项目,包含以下几个功能后边还会加新功能. 配置项加密(已实现) 服务调用链 数据脱敏

  • 如何实现自己的spring boot starter

    前言 在使用spring boot开发的时候,我们有时候想要把自己的代码打包成类似spring-boot-starter-web的样式来导入到自己的中央仓库,然后其他项目就可以引用类似springboot那样的引用了,下面我们就实现一个类似的项目. 1.新建一个spring boot 项目,取名为mybootspringbootstarter,groupId和artifactId如下所示 <groupId>com.my.boot</groupId> <artifactId&g

  • 解析Spring Boot内嵌tomcat关于getServletContext().getRealPath获取得到临时路径的问题

    问题: 使用getServletContext().getRealPath()得到的是临时文件的路径. 每次重启服务,这个临时文件的路径还会变更. 类似下面这种路径: 解决措施:在idea的启动配置里面配置工作区. 在工作区下建立public文件夹. 问题解决. 原理解释:源码位置:org\springframework\boot\web\servlet\server\DocumentRoot.javaSpringBoot启动后,默认会把commonDocRoot设置成这三个目录(java项目

  • 解析spring boot与ireport 整合问题

    pom 文件依赖 <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.10.0</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId&

随机推荐