Maven依賴傳遞、依賴傳遞排除、依賴衝突

轉載請註明原文地址:http://www.cnblogs.com/ygj0930/p/6628429.html html

    一:Maven依賴傳遞spa

    假若有Maven項目A,項目B依賴A,項目C依賴B。那麼咱們能夠說 C依賴A。也就是說,依賴的關係爲:C—>B—>A。code

    那麼咱們執行項目C時,會自動把B、A都下載導入到C項目的jar包文件夾中。htm

    這就是依賴的傳遞性。blog

 

    二:依賴傳遞的排除ci

    如上,C—>B—>A。加入如今不想執行C時把A下載進來,那麼咱們能夠用 <exclusions>標籤。get

<dependencies>

    <dependency>
        <groupId>B</groupId>
        <artifactId>B</artifactId>
        <version>0.0.1</version>

         <exclusions>
            <exclusion>
              <!--被排除的依賴包座標-->
              <groupId>A</groupId>
              <artifactId>A</artifactId>
              <version>0.0.1</version>
            </exclusion>
         </exclusions>
    </dependency>
</dependencies>

 

    三:依賴衝突與解決it

    依賴衝突:一個項目A,經過不一樣依賴傳遞路徑依賴於X,若在不一樣路徑下傳遞過來的X版本不一樣,那麼A應該導入哪一個版本的X包呢?io

    衝突解決方案:class

    1:若是依賴路徑的長度不一樣,則「短路優先」:

         A—>B—>C—>D—>E—>X(version 0.0.1)

         A—>F—>X(version 0.0.2)

         則A依賴於X(version 0.0.2)。

     2:依賴路徑長度相同狀況下,則「先聲明優先」:

         A—>E—>X(version 0.0.1)

         A—>F—>X(version 0.0.2)

         則在項目A的<depencies></depencies>中,E、F那個在先則A依賴哪條路徑的X。

相關文章
相關標籤/搜索