博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring-boot-starter-parent
阅读量:6871 次
发布时间:2019-06-26

本文共 6058 字,大约阅读时间需要 20 分钟。

一、你的项目 pom.xml 中有这段代码吗

    
org.springframework.boot
    
spring-boot-starter-parent
    
2.1.5.RELEASE
    

idea > new project > spring initializr 创建一个 Spring Boot 项目时:

或者是干脆从 https://start.spring.io/ 在线生成 Spring Boot 项目:

我们都会发现 spring-boot-starter-parent 的身影,那么他到底是干啥的呢?

这是 Spring Boot 的父级依赖,这样当前的项目就是 Spring Boot 项目了。spring-boot-starter-parent 是一个特殊的 starter,它用来提供相关的 Maven 默认依赖。

使用它之后,常用的包依赖可以省去 version 标签,当我们搭建web应用的时候,可以像下面这样添加spring-boot-starter-web依赖:

    
org.springframework.boot
    
spring-boot-starter-quartz

二、这个parent还提供了哪些特性呢

注意,关于 parent 提供的一些特性都是依据 maven 环境的,可以说

spring-boot-starter-parent 是 maven 独有的,如下是提供的一些特性:

1. 默认使用Java8,可添加以下配置修改版本:

   
1.8

2. 默认使用UTF-8编码,可添加以下配置修改编码:

    
GBK

3. 省略version信息

在 dependencies 里的部分配置可以不用填写 version 信息,这些 version 信息会从 spring-boot-dependencies 里得到继承。

正常来说项目应该添加了以下带版本的依赖:

    
org.springframework.boot
    
spring-boot-starter-data-jpa
    
2.1.8

使用 spring-boot-starter-parent 的话,可以这样,继承默认版本:

    
org.springframework.boot
    
spring-boot-starter-data-jpa

4. 识别过来资源过滤

例如,打包的时候把 src/main/resources 下所有文件都打包到包中。

  
src/main/resources
  
    
**/*.*
  
  
true

5. 识别插件的配置

比如 exec plugin, surefire, Git commit ID, shade

能够识别 application.propertiesapplication.yml 类型的文件,同时也能支持 profile-specific 类型的文件(如: application-foo.properties and application-foo.yml,这个功能可以更好的配置不同生产环境下的配置文件)。

三、覆盖并使用使用自己的依赖版本

使用 spring-boot-starter-parent 来帮我们管理 version 确实方便了不少,但是往往我们需要自己去配置某些版本,怎么办呢?

我们可以通过覆盖 properties 标签的 property 标签来达到修改依赖版本号的目的,例如上方的修改默认的编码方式、以及默认jdk版本:

    
1.8
    
UTF-8

为什么这样可以实现?

我们了解 Spring Boot Dependencies 定义了所有 Spring Boot 项目的默认依赖关系管理。如果我们想要使用特定依赖项的新版本,我们可以通过在项目 pom 中指定新属性来覆盖该版本。

下面的摘录显示了由 Spring Boot Dependencies 父 pom 管理的一些重要依赖项。由于 Spring Boot Starter Parent 继承自 spring-boot-dependencies,因此它也共享所有这些特性。

  
5.13.4
     ...   
2.10.2.2.21
  
3.1.1
     ...   
1.4.192
  
1.3
  
3.6.4
  
5.0.9.Final
  
5.2.4.Final
  
2.4.7
  
2.3.13
  
2.4.7.Final
  
2.3.3
  
2.21
  
4.1.2
  
4.5.2
  
4.4.5
  
8.2.2.Final
  
2.8.1
     ....   
2.23.1
  
2.0.3
  
9.3.11.v20160721
  
2.2.0.v201112011158
  
4.1.1.RELEASE
  
8.5.4
  
1.3.23.Final
  
1.7
  
2.0
  
9f96c74
  
0.32
  
1.6.3
  
1.4.01

所以,我们更改了 property 后,也实现了我们的需求,当然我们还有直接注明 version 的方式呢,如下:

    
mysql
    
mysql-connector-java
    
5.1.47

四、一个完整的pom.xml实例

    
4.0.0
    
club.sscai.tmax
    
tmax
    
0.0.1-SNAPSHOT
    
tmax
    
Demo project for Spring Boot
    
        
org.springframework.boot
        
spring-boot-starter-parent
        
2.1.5.RELEASE
        
    
    
        
1.8
        
UTF-8
    
    
        
            
org.springframework.boot
            
spring-boot-starter-web
        
        
        
            
com.alibaba
            
druid-spring-boot-starter
            
1.1.10
        
        
        
            
mysql
            
mysql-connector-java
            
5.1.47
        
        
        
            
org.springframework.boot
            
spring-boot-starter-data-jpa
        
        
        
            
org.projectlombok
            
lombok
            
1.18.4
        
        
        
            
io.springfox
            
springfox-swagger-ui
            
2.7.0
        
        
            
io.springfox
            
springfox-swagger2
            
2.7.0
        
        
        
            
org.springframework.boot
            
spring-boot-devtools
            
true
        
    
    
        
            
                
org.springframework.boot
                
spring-boot-maven-plugin
            
        
    

转载于:https://www.cnblogs.com/niceyoo/p/10960207.html

你可能感兴趣的文章
BIND基础配置详解
查看>>
火狐增加安全端口,每次用都得查,好麻烦,自己记录一下
查看>>
c# 多线程排队队列实现的源码
查看>>
LDA入门与Java实现
查看>>
Windows下搭建Nginx+PHP运行环境
查看>>
19_css背景控制.html
查看>>
计算机网络测试和故障诊断的发展
查看>>
Delphi 与 DirectX 之 DelphiX(29): TDIB.AddMonoNoise();
查看>>
Windows Server 2008 FTP用户目录隔离模式
查看>>
zookeeper-kafka环境搭建,生产者消费者终端测试
查看>>
Catnut 微博app第一个版本发布了
查看>>
Cocos Creator常见问题汇总
查看>>
String MVC 异常处理
查看>>
vsftpd中锁定用户目录
查看>>
探索MySQL高可用架构之MHA(3)
查看>>
org.apache.struts2.json.JSONWriter can not access a member of class
查看>>
美国买房十大步骤
查看>>
PageOffice实现js执行在线编辑时Word文档中的宏命令
查看>>
解决Linux中文乱码
查看>>
OPC UA 统一架构学习2
查看>>