maven中scope標簽以及exclusions 記錄


scope的分類

1.compile:默認值 他表示被依賴項目需要參與當前項目的編譯,還有后續的測試,運行周期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去

2.test:依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯和執行,不會被打包,例如:junit

3.runtime:表示被依賴項目無需參與項目的編譯,不過后期的測試和運行周期需要其參與。與compile相比,跳過了編譯而已。例如JDBC驅動,適用運行和測試階段

4.provided:打包的時候可以不用包進去,別的設施會提供。事實上該依賴理論上可以參與編譯,測試,運行等周期。相當於compile,但是打包階段做了exclude操作

5.system:從參與度來說,和provided相同,不過被依賴項不會從maven倉庫下載,而是從本地文件系統拿。需要添加systemPath的屬性來定義路徑

 

scope的依賴傳遞

 

A依賴B,B依賴C。當前項目為A,只當B在A項目中的scope,那么c在A中的scope是如何得知呢?

 

當C是test或者provided時,C直接被丟棄,A不依賴C;(排除傳遞依賴)

 

否則A依賴C,C的scope繼承與B的scope

exclusions主要用於排除依賴

 

  1. <exclusions>  
  2.         <exclusion>  <!-- declare the exclusion here -->  
  3.           <groupId>sample.ProjectC</groupId>  
  4.           <artifactId>Project-C</artifactId>  
  5.         </exclusion>  
  6.       </exclusions>   

 

 當然,對於多重依賴,配置也很簡單,參考如下示例:

  1. Project-A  
  2.    -> Project-B  
  3.         -> Project-D   
  4.               -> Project-E <! -- This dependency should be excluded -->  
  5.               -> Project-F  
  6.    -> Project C 

1、maven官網:http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html


免責聲明!

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



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