Maven依赖管理
Maven依赖管理其实就是Maven软件对工程依赖的jar包进行统一管理。
1、依赖管理配置
在Maven工程的pom文件中通过group+artifactId+version来唯一标示仓库中的一个jar包,使用这种方式来管理项目所有依赖的服务。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
2、依赖范围
目前Maven范围分为三个阶段:编译范围,测试范围,运行范围。依赖范围指的是,项目依赖的jar包在三个范围中的哪个或哪些范围内有效。
compile:编译,测试,运行范围内都有效。这也是默认的依赖范围
test:在编译和测试范围内有效
provide:只在运行时范围内有效
依赖范围配置
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
//依赖范围配置
<scope>test</scope>
</dependency>
3、依赖传递
B项目依赖c.jar,如果此时A项目依赖B项目,则A项目也依赖c.jar。
依赖传递性
B依赖c.jar的依赖范围只能是compile的情况下,依赖才具有传递性。
依赖传递性原则:
统一jar包,被不同的项目依赖,会有不同的依赖原则。
- 最短路径优先
app1.0.jar依赖起效
- 声明顺序优先
app1.0.jar依赖起效
- 覆盖原则
一个pom文件中一个jar包依赖严禁声名多次,如果被多次声明则以最后一次声明的依赖为准。
依赖冲突解决
排除掉不需要的依赖
<dependency>
<groupId>com.xxx</groupId>
<artifactId>project-A</artifactId>
<version>1.0</version>
<!--将这里就是排除冲突的依赖-->
<exclusions>
<exclusion>
<groupId>com.xxx</groupId>
<artifactId>project-common</artifactId>
</exclusion>
</exclusions>
</dependency>