maven学习3
scope—依赖范围
- compile:默认的范围,编译、测试以及运行阶段都有效
- provided:在编译和测试时有效
- runtime:在测试和运行时有效
- test:只在测试范围有效
- system:依赖范围和provided类似,但与本机系统相关联,可移植性差
- import:导入的范围,它只使用在dependencyManagement中,
表示从其他的pom中导入dependency的配置
依赖传递
install指令能把项目打包到本地仓库,运行install指令,同时还运行了package打包。
编译一个项目,如果存在依赖,首先会在本地仓库查找,如果没找到,直接到中央仓库查找,如果还是没找到,则报错。所以编译一个存在本地依赖的项目,本地依赖一定要运行install指令,把依赖的项目打包到本地仓库。
如果想排除某个依赖的项目,则需要在pom.xml添加exclusions标签,添加到已经添加了排除依赖的依赖里,把需要排除的依赖的坐标引进来。
依赖冲突原则:
1.短路优先:C依赖B,B依赖A,A和B都包含同一个不同版本的Jar,则取B的依赖版本
2.声明优先:C依赖A和B,A和B都包含同一个不同版本的Jar,谁先声明取谁的依赖版本