maven相关依赖的官网:https://mvnrepository.com/
pom.xml是项目依赖的配置文件
maven首先会去本地仓库下载相关依赖,如果没有,则会去中央仓库或镜像下载。
自定义properties,可使用${}将属性作为变量引入
xml
<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
手动排除的依赖,不会向上传递xml<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>