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


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

    一:Maven依賴傳遞

    假如有Maven項目A,項目B依賴A,項目C依賴B。那么我們可以說 C依賴A。也就是說,依賴的關系為:C—>B—>A。

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

    這就是依賴的傳遞性。

 

    二:依賴傳遞的排除

    如上,C—>B—>A。加入現在不想執行C時把A下載進來,那么我們可以用 <exclusions>標簽。

<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>

 

    三:依賴沖突與解決

    依賴沖突:一個項目A,通過不同依賴傳遞路徑依賴於X,若在不同路徑下傳遞過來的X版本不同,那么A應該導入哪個版本的X包呢?

    沖突解決方案:

    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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM