Maven的依赖管理
maven相关依赖的官网:https://mvnrepository.com/
pom.xml是项目依赖的配置文件
maven首先会去本地仓库下载相关依赖,如果没有,则会去中央仓库或镜像下载。
自定义properties,可使用${}将属性作为变量引入
<properties><junit.version>5.10.2</junit.version>
</properties>
<dependencies><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>${junit.version}</version><scope>test</scope></dependency>
</dependencies>
依赖范围scope
依赖范围 | 说明 |
---|---|
compile | 编译依赖范围。默认值,在编译、测试、运行环境下都可使用。依赖关系中可以进行传递 |
test | 测试依赖范围。只有在测试环境下可用,比如:junit |
provided | 已提供依赖范围。在编译、测试环境下可用,比如:servlet-api(在服务器端已提供此jar包,不需要在运行时再次引入) |
runtime | 运行时依赖范围。在测试、运行环境下可用,比如:jdbc |
system | 系统依赖范围。在编译、测试环境下可用,需指定本地依赖路径,可移植性变差,不推荐使用 |
import | 导入依赖范围。 |
依赖传递原则
- 只有当依赖是compile时,才可向上传递
- 强制中止依赖传递:
<optional>true</optional>
依赖冲突原则
- 路径最短优先原则
当A依赖B,B依赖Druid-1.2.7,A依赖Druid-1.2.8,则优先使用Druid-1.2.8 - 当路径长度相同,先声明优先原则
当A依赖B,B依赖Druid-1.2.7,A依赖C,C依赖Druid-1.2.8,则按照B、C在dependencies中的顺序决定 - 手动依赖排除,exclusions
手动排除的依赖,不会向上传递<dependency><groupId>com.wyt.maven</groupId><artifactId>maven_c</artifactId><version>1.0-SNAPSHOT</version><exclusions><exclusion><groupId>com.alibaba</groupId><artifactId>druid</artifactId></exclusion></exclusions> </dependency>