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 依賴管理