Maven依賴範圍及依賴傳遞
一: 依賴範圍scope
共5種,compile (編譯)、test (測試)、runtime (執行時)、provided、system
不指定,則依賴範圍預設為compile.
compile:編譯依賴範圍,在編譯,測試,執行時都需要。
test: 測試依賴範圍,測試時需要。編譯和執行不需要。如Junit
runtime: 執行時依賴範圍,測試和執行時需要。編譯不需要。如JDBC驅動包
provided:已提供依賴範圍,編譯和測試時需要。執行時不需要。如servlet-api
system:系統依賴範圍。本地依賴,不在maven中央倉庫。
二:依賴的傳遞
A->B(compile) 第一關係: a依賴b compile
B->C(compile) 第二關係: b依賴c compile
當在A中配置
<dependency>
<groupId>com.B</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
</dependency>
則會自動匯入c包。關係傳遞如下表:
第一 第二 |
compile |
test |
provided |
runtime |
compile |
compile |
- |
- |
runtime |
test |
test |
- |
- |
test |
provided |
provided |
- |
provided |
provided |
runtime |
runtime |
- |
- |
runtime |
3.依賴衝突的調節
A->B->C->X(1.0)
A->D->X(2.0)
由於只能引入一個版本的包,此時Maven按照最短路徑選擇匯入x(2.0)
A->B->X(1.0)
A->D->X(2.0)
路徑長度一致,則優先選擇第一個,此時匯入x(1.0)
4.排除依賴
A->B->C(1.0)
此時在A專案中,不想使用C(1.0),而使用C(2.0)
則需要使用exclusion排除B對C(1.0)的依賴。並在A中引入C(2.0).
pom.xml中配置
<!--排除B對C的依賴-->
<dependency>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>0.1</version>
<exclusions>
<exclusion>
<groupId>C</groupId>
<artifactId>C</artifactId><!--無需指定要排除專案的版本號-->
</exclusion>
</exclusions>
</dependency>
<!---在A中引入C(2.0)-->
<dependency>
<groupId>C</groupId>
<artifactId>C</artifactId>
<version>2.0</version>
</dependency>
5.依賴關係的檢視
cmd進入工程根目錄,執行 mvn dependency:tree
會列出依賴關係樹及各依賴關係
mvn dependency:analyze 分析依賴關係
相關文章
- Maven依賴管理:控制依賴的傳遞Maven
- maven基礎:依賴範圍Maven
- 依賴管理和依賴範圍
- Maven依賴scope範圍詳解Maven
- maven2+依賴傳遞Maven
- Maven依賴管理Maven
- Maven 依賴管理Maven
- - Maven 依賴管理Maven
- Maven 依賴關係Maven
- Maven依賴機制Maven
- Maven工程依賴配置Maven
- Maven 引入外部依賴Maven
- maven 依賴匯入Maven
- Maven什麼時候需要排除依賴,如何排除依賴Maven
- Maven依賴管理系統Maven
- Maven依賴管理之BOMMaven
- Maven檢視依賴樹Maven
- 探索 JavaScript 中的依賴管理及迴圈依賴JavaScript
- Maven依賴版本更新踩坑Maven
- Maven依賴衝突處理Maven
- Maven:idea新增maven依賴分析外掛MavenIdea
- 依賴
- maven 將依賴包打入jar中MavenJAR
- idea Maven新增依賴沒有提示IdeaMaven
- maven中新增Servlet和jsp依賴MavenServletJS
- Maven依賴中的scope詳解Maven
- Maven的頂級功能——依賴管理Maven
- 半導體“依賴症”:世界依賴中國、中國依賴世界
- Maven快速入門(五)Maven的依賴管理Maven
- Maven依賴版本號引發的血案Maven
- 解決eclipse的maven依賴報錯EclipseMaven
- 在Idea 內搜尋新增Maven 依賴IdeaMaven
- IDEA中使用maven打包且包含依賴IdeaMaven
- maven依賴衝突以及解決方法Maven
- Maven依賴衝突解決總結Maven
- IDEA中Maven顯示存在依賴但專案中並未匯入依賴JARIdeaMavenJAR
- maven中排除依賴傳遞可以在pom.xml檔案中使用exclusions標籤MavenXML
- 動態庫遞迴依賴專項遞迴
- 依賴引入 | Android依賴引入史上最全攻略Android