002 依赖管理
Posted trekxu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了002 依赖管理相关的知识,希望对你有一定的参考价值。
一 .概述
在我们使用maven构建项目的时候,有一个问题是非常麻烦的,那就是依赖的管理,尽管maven能够帮助我们在一定的程度上解决这个问题,但是依赖版本之间的问题,依然是一个很头疼的问题.
在springboot之中,为了更快的构建项目,为我们提供了一个依赖管理的功能.
二 .解决依赖管理的问题
springboot为我们提供了一个父pom文件,在这个文件之中,为我们制定好了依赖的版本,这些版本都是经过测试之后的稳定版本,这样就解决了我们的依赖版本的问题.
我们一般情况下称这种机制为版本仲裁器.
在springboot之中,为哦我们提供了两个方式进行:
[1]引入一个springboot的父pom完成
[2]加载一个springboot的依赖管理器
(1)使用springboot的父pom文件
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.16.RELEASE</version> </parent>
我们一般将这个父pom文件定义在一个我们自己的父pom文件之中,这样就能使用maven的聚合功能.
(2)使用依赖管理器
有的时候,我们已经有了一个父pom文件了,上面的这种方式就不能使用了.为此,springboot为我们提供了一个依赖管理器帮助我们使用springboot.
<dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.16.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
三 .覆盖依赖版本信息
有的时候,我们不想使用springboot提供的版本信息,比如在thymeleaf的使用上,我们就需要覆盖掉上述的依赖版本信息.
本次,我们覆盖掉thymeleaf的信息.
[1]覆盖parent的pom的版本信息
我们知道,在springboot的父pom信息之中,版本的信息都放在属性之中,如下:
<properties> <!-- Dependency versions --> <activemq.version>5.14.5</activemq.version> <antlr2.version>2.7.7</antlr2.version> <appengine-sdk.version>1.9.59</appengine-sdk.version> <artemis.version>1.5.5</artemis.version> <aspectj.version>1.8.13</aspectj.version> <assertj.version>2.6.0</assertj.version> <atomikos.version>3.9.3</atomikos.version> <bitronix.version>2.1.4</bitronix.version>
我们如果想覆盖的话,就比较容易了,我们只需要覆盖掉这些属性就行了,本次我们使用thymeleaf做演示.
<thymeleaf.version>2.1.6.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>1.4.0</thymeleaf-layout-dialect.version>
上面是springboot默认使用的thymealf的版本,我们只需要覆盖掉属性就可以了.
我们首先看看默认引入的jar文件的版本:
我们从上面的依赖图中发现,确实就是属性之中定义的版本信息,如果想要覆盖,只需要加入如下的信息就好了.
<properties> <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version> <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version> </properties>
我们发现,我们就是在我们自己的pom文件之中覆盖了上面的版本属性.
我们现在发现,我们的thymeleaf的信息被覆盖掉了.
[2]在依赖管理器之中覆盖版本信息
比起在父pom之中覆盖版本信息而言,这种方式就比较麻烦了.
我们首先需要排除掉依赖,然后再加入我们自己的依赖才可以.
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring4</artifactId> <version>2.1.0</version> </dependency> </dependencies> </dependencyManagement>
我们这里使用的就是在依赖管理之中,添加对应的的thymeleaf的版本,这样按照依赖传递的原则,显示声明的优先级要高,我们就覆盖掉了原先的thymeleaf的内容了.
但是,这样我们在使用的时候就需要自己手动添加依赖了.
以上是关于002 依赖管理的主要内容,如果未能解决你的问题,请参考以下文章
HLS NGINX-RTMP [错误] 1281#0:* 58 hls:强制片段拆分:10.002 秒
SpringBoot脚手架项目002-004.Spring IOC_权限管理系统_Spring:什么是IOCSpring Bean注入SpringBean的注解bean的加载流程