4.pom.xml文件 - spring-boot-starter-parent 与 spring-boot-dependencies

Spring Boot Starter简化了依赖管理,自动配置所需组件。Spring-boot-starter-parent提供版本控制,统一编码、依赖版本等配置。Spring-boot-dependencies管理所有Spring Boot支持的依赖版本。不使用parent POM时,可通过dependencyManagement引用依赖版本。

作者:HaC是个程序员
链接:https://www.zhihu.com/question/426662759/answer/1739510301
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

目录

1、Spring Boot Stater

2、spring-boot-starter-parent 的作用是什么?

3、spring-boot-dependencies

 

要理解spring-boot-starter-parent,首先要明白springBoot中的starter是什么。

1、Spring Boot Stater

可以理解为这是一个启动器,这个启动器会自动依赖其他组件,一站式获取你需要的与spring有关的组件。

举个例子:

如果你想使用 Sping 和 JPA 访问数据库,只需要你的项目包含 spring-boot-starter-data-jpaspring-boot-starter-jdbc 依赖项,你就可以完美进行。

如果你想开发一个web应用程序,只需要你的项目包含 spring-boot-starter-web 依赖项就可以了。

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

然后就会自动依赖其他组件:

而不是像spring那样,你需要在pom单独引入spring-core、spring-beans、spring-aop 等等,最最最重要的是,可以省去了版本冲突的问题。还可以通过spring-boot-starter-parent 统一控制版本。

 

2、spring-boot-starter-parent 的作用是什么?

前面说到 ,spring-boot-starter-parent 可以统一控制版本。

还有以下作用:

  • 使用Java编译、打包版本
<properties>
  <java.version>1.8</java.version>
</properties>
  • 指定编码
<properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
  • 统一版本

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

继承默认版本:

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
 </dependency>
  • 识别过来资源过滤

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

<includes>
  <include>**/*.*</include>
</includes>
  <filtering>true</filtering>
</resource>

 


小彩蛋:

为什么依赖包可以不写版本号?

可以看一下spring-boot-starter-parent ,我这里是2.4.1版本,它的parent是 spring-boot-dependencies

 

再根据spring-boot-dependencies 跳过去,发现该版本下的spring-boot-starter-parent 会有很多默认的依赖包的版本:

现在你就知道 spring-boot-starter-parent 不需要其他依赖包指定版本了吧,这里都有默认的版本,你可以不需要考虑依赖包的版本了,完美解决冲突问题了。

 

3、spring-boot-dependencies

Spring Boot的每个发布版本都会规划它所支持的依赖项。实际上,你不用指定这些依赖项的版本号,因为Spring Boot都为你管理好了。当更新Spring Boot时,会相应的更新依赖。

spring-cloud-dependencies也是一个依赖管理器的pom文件,与spring-boot-starter-parent的作用一样,不同的是spring-cloud-dependencies是对cloud的依赖管理。如:spring-cloud-starter-config、spring-cloud-starter-netflix-eureka-server

1使用spring-boot-starter-parent

1.1.配置继承spring-boot-starter-parent:只需要在这里指定Spring Boot的版本号。如果导入其他的starters,你可以完全省略版本号。

 

1.2可以通过property覆盖内部的依赖

 

2不使用parent POM,配置Spring Boot

2.1如果你可能有自己的企业标准parent,或者你可能只是比较喜欢明确声明所有的Maven配置。可以通过使用scope=import利用依赖管理的便利:不过这种方式不能使用property的形式覆盖原始的依赖项

 

2.2要达到同样的效果,需要在dependencyManagement里面的spring-boot-dependencies之前添加依赖的东西

作者:十斗鱼
链接:https://www.jianshu.com/p/0d97b5ec2aa7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值