轉自:
http://www.java265.com/Maven/202204/3219.html
下文筆者講述maven依賴范圍的簡介說明maven依賴范圍簡介
在maven依賴時,其坐標后面跟上scope里面的值
我們稱之為依賴范圍:
它用于控制依賴,編譯,測驗,運行
依賴范圍scope 用來控制依賴和編譯,測驗,運行的classpath的關系,具體的依賴范圍有如下6種:
| 依賴范圍 | 備注說明 |
| compile | 默認編譯依賴范圍,對于編譯,測驗,運行三種classpath都有效 |
| test | 測驗依賴范圍,只對于測驗classpath有效 |
| provided | 已提供依賴范圍,對于編譯,測驗的classpath都有效,但對于運行無效,因為由容器已經提供,如servlet-api |
| runtime | 運行時提供,如:jdbc驅動 |
| system | 系統范圍,自定義構件,指定systemPath;跟provided 相似,但是在系統中要以外部JAR包的形式提供,maven不會在repository查找它 |
| import | 只使用在<dependencyManagement>中,指從其它的pom中匯入dependency的配置 |
傳遞性依賴
如: C依賴B B依賴A 則稱C對B是第一直接依賴,B對A是第二直接依賴,C對A是傳遞依賴
可選依賴
在依賴節點dependency中 <optional>屬性 可控制當前的依賴是否向下傳遞 默認值為false,表示向下傳遞例:A專案依賴于log4j,B專案依賴于A專案 如果在A中對log4j依賴的optional配置成false時 B專案中自動傳遞依賴于log4j,否則反之,
專案A配置slf4j的依賴并設定optional為true
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
<!-- 配置為true時不向下傳遞此依賴,默認為false -->
<optional>true</optional>
</dependency>
配置專案B依賴于專案A,檢查專案B的依賴包
<!-- 依賴于A -->
<dependency>
<groupId>com.yiidian</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
此時可以看出B專案沒有依賴slf4j-log4j12
依賴沖突
當一個jar在直接或間接依賴同一坐標的不同版本的資源時,此時以就近原則依賴指定jar包 如:A-->B-->C-->D-->X(1.9) A-->D-->X(2.0) 1.根據就近原則,此時A會依賴X的2.0版本 2.當依賴中存在兩個相同的坐標時,則以順序下方的版本為準例:
當一個pom.xml引入兩個相同的jar時,此時會 引入3.5.8的mybatis
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.8</version>
</dependency>
排除依賴
在pom中的依賴節點中 當引入的依賴包含了很多其它的傳遞依賴 同此時專案中依賴的jar包不符,此時我們需排除這些依賴,該如何操作呢? 下文筆者將一一道來,如下所示: 使用 <exclusions> 然后再添加 <exclusion>可排除指定的jar例:
使用exclusion排除spring-plugin中的spring-core依賴
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>3.2.23.1</version> <exclusions> <!-- 排除spring-core的傳遞依賴 --> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>3.2.0.RELEASE</version> </dependency>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/468722.html
標籤:Java
上一篇:Spring Boot 實作 WebSocket 示例
下一篇:平臺介面建設規范
