maven项目的依赖、继承管理
目錄
- maven依賴
- scope 依賴范圍
- 依賴傳遞
- 依賴沖突
- 可選依賴
- 排除依賴
- maven繼承
- 繼承
maven依賴
scope 依賴范圍
-
其中依賴范圍scope 用來控制依賴和編譯,測試,運行的classpath的關系. 主要的是三種依賴關系如下:
- compile: 默認編譯依賴范圍。對于編譯,測試,運行三種classpath都有效
- test:測試依賴范圍。只對于測試classpath有效
- provided:已提供依賴范圍。對于編譯,測試的classpath都有效,但對于運行無效。因為由容器已經提供,例如servlet-api
- runtime:運行時提供。例如:jdbc驅動
依賴傳遞
project…test2的pom.xml添加對project.test1的依賴
<dependency><groupId>com.project</groupId><artifactId>project.test1</artifactId><version>0.0.1-SNAPSHOT</version> </dependency>test1必須先安裝到本地庫,否則編譯test2時會拋異常
- 直接依賴和間接依賴
- test2 依賴 test1,test3依賴test2
- test2 直接依賴 test1,test3間接依賴test1
- 當?shù)诙蕾嚨姆秶莄ompile的時候,依賴可以傳遞
- 當?shù)诙苯右蕾嚨姆秶莟est的時候,依賴不會得以傳遞
依賴沖突
假如test1使用junit4.10依賴,并且scope是compile,那test2,test3都可以使用test1的junit4.10,因為傳遞下來了
假如test2使用junit4.9依賴,那test3會使用【就近的一個依賴】,也就是使用junit4.9
可選依賴
<optional> true/false<optional> 是否可選,也可以理解為是否向下傳遞。
在依賴中添加optional選項決定此依賴是否向下傳遞,如果是true則不傳遞,如果是false就傳遞,默認為false
project…test2的pom.xml 文件:
<dependency><groupId>com.project</groupId><artifactId>project.test1</artifactId><version>0.0.1-SNAPSHOT</version><optional> true<optional> </dependency>排除依賴
exclusions可用于排除依賴,注意exclusions是寫在dependency中
<dependency><groupId>com.project</groupId><artifactId>project.test2</artifactId><version>0.0.1-SNAPSHOT</version><!--排除test2中test1的依賴 --><exclusions><exclusion><groupId>com.project</groupId><artifactId>project.test1</artifactId></exclusion></exclusions> </dependency>maven繼承
繼承
繼承是為了消除重復,可以把很多相同的配置提取出來。例如:grouptId,version等
假設目前有四個maven項目,分別是project.parent、project.test1、project.test2、project.test3
要求test1、test2、test3整合到一個項目,并且從project.parent繼承依賴
執(zhí)行clean compile 進行驗證,會同時編譯test1、test2、test3三個項目
會自動繼承父類的依賴jar
在父工程中通過配置dependencies依賴,子工程可以直接繼承使用
如果把父類依賴放在<dependencyManagement>中管理,則子類不會自動成父類的依賴
project.parent的pom.xml 文件:
<parent><dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope></dependency></dependencies></dependencyManagement> </parent>總結
以上是生活随笔為你收集整理的maven项目的依赖、继承管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python爬虫对json数据解析爬取
- 下一篇: Spring Boot集成Dubbo多模