1. 程式人生 > >002 依賴管理

002 依賴管理

不想 但是 1.4 spa mis 穩定版 版本信息 解決 group

一 .概述

  在我們使用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 依賴管理