4.pom.xml文件 - spring-boot-starter-parent 与 spring-boot-dependencies - Go语言中文社区

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


作者: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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yiguang_820/article/details/117675030
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-12-11 12:08:00
  • 阅读 ( 406 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢