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中scope依賴範圍與classpath的關係Maven
- Maven依賴機制Maven
- Maven 依賴關係Maven
- Maven工程依賴配置Maven
- 學習筆記——Maven 如何處理傳遞性依賴筆記Maven
- 在使用反射時,maven設定依賴範圍引起的異常反射Maven
- Maven依賴管理系統Maven
- 探索 JavaScript 中的依賴管理及迴圈依賴JavaScript
- Maven依賴衝突處理Maven
- Maven最佳實踐:管理依賴Maven
- Maven依賴版本更新踩坑Maven
- maven依賴jar包更新,業務jar需同步更新(業務jar依賴API)MavenJARAPI
- 依賴
- saltstack對遞迴依賴條件(死迴圈依賴)的處理遞迴
- 依賴倒置(DIP)與依賴注入(DI)依賴注入
- maven 將依賴包打入jar中MavenJAR
- Maven依賴中的scope詳解Maven
- Maven的頂級功能——依賴管理Maven
- Maven快速入門(五)Maven的依賴管理Maven
- maven打包時過濾檔案及排除依賴包Maven
- maven依賴衝突以及解決方法Maven
- Maven依賴版本號引發的血案Maven
- maven中新增Servlet和jsp依賴MavenServletJS
- idea Maven新增依賴沒有提示IdeaMaven
- Maven依賴衝突解決總結Maven
- maven解決jar包依賴衝突MavenJAR
- AI依賴算力,而算力依賴能源AI
- Maven-Maven統一管理依賴的版本Maven
- 動態庫遞迴依賴專項遞迴
- maven中排除依賴傳遞可以在pom.xml檔案中使用exclusions標籤MavenXML
- IDEA中Maven顯示存在依賴但專案中並未匯入依賴JARIdeaMavenJAR
- 【PY】PyQT 依賴QT