一、maven基本介绍
1.maven介绍
maven是一个项目管理工具,主要作用是在项目开发阶段对java项目进行依赖管理和项目构建。
依赖管理:对jar包进行管理。通过导入maven坐标,相当于将仓库中的jar包引入到当前项目
项目构建:通过maven的一个命令就可以完成项目从清理、编译、测试、报告、打包、部署整个过程。
2、maven仓库类型
(1)本地仓库
(2)远程仓库:https://mvnrepository.com/
*1)maven中央仓库
*2)maven私服(公司局域网内的仓库,需要自己搭建)
*3)其他公共远程仓库
3、maven常用命令
clean:清理
compile:编译
test:测试
package:打包
install:安装
4、maven书写规范
5、maven依赖范围
对于依赖的scope属性,里面的值可以是compile,test,provided,runtime,system。这五个值表明了这个jar包在什么情况下可以用。
compile:编译,测试,运行均可以
test:仅测试可用
runtime:编译不可用
provided:运行不可用
system:运行不可用(本地的,maven仓库之外的类库)
二、依赖传递
1、依赖传递
maven中,依赖可以传递。假如C直接依赖B,B直接依赖A,那么C间接依赖A。
2、依赖冲突
当发生不同版本冲突时,怎么解决
(1)使用maven提供的依赖调解原则
*1)第一声明者优先原则:在pom文件中定义依赖,以先声明的依赖为准
*2)路径近者优先原则:在pom文件中定义依赖,以路径近的依赖为准(如果直接在pom中定义,而不是通过间接依赖,那以直接依赖为准)
(2)排除依赖:使用exclusions标签将传递过来的依赖排除出去
(3)锁定版本:采用直接锁定版本的方法确定依赖jar包的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定的版本为准添加到工程中(重要)
*1)在dependencyManagement标签中锁定依赖的版本
注:锁定不等于引入,真正用的时候还是需要引入的
*2)在dependencies标签中声明需要导入的maven坐标
注:导入坐标的时候不需要加version了