Maven的scope依賴作用域說明


Maven的scope依賴作用域說明

1test范圍指的是測試范圍有效,在編譯和打包時都不會使用這個依賴

2compile范圍指的是編譯范圍有效,在編譯和打包時都會將依賴存儲進去

3provided依賴:在編譯和測試的過程有效,最后生成war包時不會加入,諸如:servlet-api,因為servlet-apitomcatweb服務器已經存在了,如果再打包會沖突 

4runtime在運行的時候依賴,在編譯的時候不依賴 

默認的依賴范圍是compile 

 

依賴的傳遞:

作用域是test的包不會傳遞到引用這個項目的其它項目,但如果不是test會傳遞依賴到其它項目。

如:項目A中有一個依賴包junit4.10,它的作用域是test

現在有一個項目B,引用項目A,如果項目B要使用junit4.10就必須自己重新定義依賴關系。【因為不會傳遞依賴,所以不會從項目A中得到】

但:如果作用域是其它的,不是test

那么項目B可以直接使用不用自己再定義一個依賴關系。【因為會從項目A中自動傳遞依賴,而得到】

 

依賴關系的傳遞(間接依賴)

1、同級別依賴
-->(依賴)

項目A-->P包1.0
項目B-->P包2.0

項目C-->項目A,項目B

項目C得到的P包,應該是哪個呢?
應該是項目A的P包1.0,因為在項目C中,項目A依賴關系定義在前,項目B的依賴配置定義在后。

2、不同級別依賴,層級少的優先依賴
如:
A-->P1.0
B-->A
C-->B

D-->P2.0

E-->C,D 那么,E通過傳遞依賴得到的將會是:P2.0 (就算E中的C依賴定義在前面)

3、排隊依賴,當包通過傳遞,產生了沖突時可能通過排隊依賴關系解決
<exclusions>
  <exclusion>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
  </exclusion>
</exclusiongs>


免責聲明!

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



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