1. MAVEN 简介
(1)什么是maven
maven 是一个软件开发的管理工具,它主要的工作是 : 依赖管理,项目构建
(2)使用Maven的好处
能够集中管理jar包,并提供一键构建
(3)maven的常用命令
命令 | 描述 |
---|---|
compile | |
test | |
package | |
install | |
deploy | |
clean | |
site |
(4)maven 工程目录结构
(5)maven的依赖范围
依赖范围 | 对编译classpath 有效 | 对测试classpath有效 | 对运行时classpath有效 |
---|---|---|---|
compile | √ | √ | √ |
test | × | √ | × |
provided | √ | √ | × |
runtime | × | √ | √ |
(6)maven的概念模型
2. MAVEN 的依赖传递
(1)在maven中依赖传递是有范围的
- 在user-dao模块中引入了junit模块,将scope设置为test.
- 在user-service 引入 user-dao模块,我们会发现我们访问不了junit
(2)规则图示
(3)传递原则一,纵坐标直接依赖
# 1. A 依赖 B,B 是 A 的直接依赖。
# 2. 在 A 的 pom.xml 中添加 B 的坐标。
(4)传递原则二,横坐标 传递依赖
B 依赖 C,C 是 A 的传递依赖。
(5)传递原则三,中间部分:传递依赖的范围,A 依赖C的范围
3. MAVEN的依赖传递原则
3.1 分类
(1)第一声明者优先原则
(2)路径近者优先原则
3.2 第一声明者优先原则
谁先申明,就用谁的。跟坐标代码的顺序有关
测试:
添加struts2-spring-plugin(2.3.24)在前,spring-context(4.2.3.RELEASE)在后。
结果
如果将上边struts-spring-plugins和spring-context顺序颠倒,系统将导入spring-beans-4.2.3。
结果:
分析:
由于spring-context在前边以spring-context依赖的spring-beans-4.2.3为准,所以最终spring-beans-4.2.3添加到了工程中。
3.2 路径近者优先原则
struts2-spring-plugin(2.3.24)跟spring-context(4.2.3.RELEASE)都会添加spring-beans的依赖。Strut2-spring-plugin会引入spring-beans.3.0.5, 而spring-context会引入spring-beans.4.2.3。如果这时我们直接加入新的依赖叫spring-beans.4.2.4.RELEASE
结果:
分析:系统中如果要引入spring-beans,可以有以下方法
- 通过引入struts2-spring-plugin,它会引入spring-beans.3.0.5的版本。需要经过的路径为2个节点
- 通过引入srping-beans-4.2.3,它会引入spring-beans.4.2.3的版本,需要经过的路径为2个节点
- 如果直接引入spring-beans-4.2.4,只需要经过1个节点
因此不管spring-beans.4.2.4的位置在哪,系统始终都是引入spring-beans.4.2.4的版本。