1.maven简介
分两部分:软件(管理jar包)和仓库(存放jar包)
核心功能:项目构建(maven管理项目从生到死的一个生命周期)
仓库:(本地仓库 , 远程仓库(私服) , 中央仓库)
maven是通过坐标(groupId和artifactId还有version)来定位和管理jar包
好处:
节省磁盘空间,
一键构建项目
跨平台
应用在大型项目上提高开发效率
2.maven安装:
maven软件解压即安装
配置环境变量
在config中配置 本地仓库还有镜像
3.idea中配置maven:
配置maven软件位置
配置maven配置文件位置
配置本地仓库位置
4.创建项目推荐不使用骨架(项目结构目录更完整一些)
5.maven项目构建:
①lifecycle:生命周期
validate : 验证 , 验证项目是正确的,所有信息是可用的
clean : 清理 , 清除字节码文件(删除缓存,一般是删除target文件夹(编译的字节码文件))
compile : 编译 , 将.java源文件编译为.class字节码文件,放在target文件夹中
test : 测试 , 运行test目录下所有的单元测试,并生成测试报告
package : 打包 , 根据pom文件中的packaging方式打成jar包或者war包
verify : 验证 , 运行任何检查,看包是否达到正确和质量要求
install : 安装 , 将打的包放入本地仓库,供其他项目依赖
site : 生成一个web站点,发布项目相关信息
deploy : 远程发布,将最终包发布到远程库.
执行后面的命令会依次执行前面的命令.
②plugins:插件(内置的插件就是生命周期指令的包装)
③dependencies: 依赖
6.maven依赖的scope(依赖范围): 当前jar包的作用范围
compile : 任何时候都有效 spring-core包
test : 只在测试的时候生效 junit包
runtime : 编译期无效,测试和运行时有效 jdbc驱动包
provided : 编译期和测试期有效,运行时无效(因为运行的时候tomcat自带了,所以不需要了,servlet -api)
system : 本地的,maven仓库之外的类库
7.maven依赖的问题
依赖传递 : A依赖B,B依赖C,那么A就依赖C
依赖冲突 : 不同的jar包同时依赖一个jar,但jar包版本不同造成依赖冲突.
解决方法:
第一声明优先原则 : (在pom文件中定义,先声明的依赖为准)
路径近者优先原则 : 把有依赖冲突的jar包直接依赖进来
排除依赖原则 : 在大依赖中排除掉有冲突的依赖(用<exclusions><exclusion>)
锁定版本 :
8.maven私服:
公司在自己的局域网内搭建自己的远程仓库服务器叫做私服 . 私服服务器即是公司内部的maven远程仓库,每个员工的电脑上安装maven软件并且连接私服服务器,员工将自己开发的项目打成jar并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。
私服还充当一个代理服务器,当私服上没有jar包会从互联网中央仓库自动下载
9.maven远程仓库:nexus
私服搭建