Maven的两大特点:
依赖管理:对Jar包的管理过程,即对Jar包的统一管理
项目构建:项目进行编码完毕后,对项目进行编译、测试、打包、部署等操作都可以通过命令来实现
Maven的依赖管理
说明:Maven项目可以通过pom文件中的配置坐标,来找到项目需要的jar包,无需再将Jar包拷贝到lib文件中
坐标的规范:公司名+项目名+版本号
例如:Struts2+core+2.3.24.jar
Apache(公司名称)+struts2(项目名)+2.3.24(版本号)
传递依赖冲突
传递依赖:A依赖B,B依赖C(1.1版本),即B是A的直接依赖,C是A的传递依赖
传递依赖冲突:此时再导入D,D依赖C(1.2版本),则此时C版本存在1.1和1.2两个版本,A,D到底要依赖哪个版本,此时存在冲突
传递依赖冲突的解决
Maven自己调节的原则
同一级别的依赖,满足第一声明者优先的原则
即:在POM文件中谁先定义的,就用谁
不同级别的,符合最短路径原则
即:直接依赖的级别高于传递依赖的级别
手动调节方法----排除依赖与版本锁定
排除依赖Exclude排除依赖
版本锁定DependencyManagement
注:dependencyManagement主要对依赖的管理,并不实际加载依赖,实际加载依赖,是下边的dependencies
即:使用了dependencyManagement来管理的版本,是哪个版本,下边就实际依赖哪个版本
Maven仓库类型
注意:中央仓库中没有Oracle数据库驱动的包
配置本地仓库
2.解压到一个文件中
Maven项目标准目录结构
注意:target目录不是标准目录文件,存放的为src源文件编译后的文件
Maven常用命令
Clean:清理
将项目根目录下的target目录清理掉
Compile:编译
将项目中的.java文件编译成.class文件
Test:单元测试
单元测试类名要求:XxxxTest.java
项目根目录下,src/test/java目录下的单元测试类都会执行
Package:打包
Web project-----war包
Java project------jar包
Install:安装
解决本地多个项目用一个jar包的问题,将jar包放到本地仓库
项目的拆分
主要思路:将dao、service层的代码以及配置文件全体提取出来到一个表现上独立的工程中,然后将独立的工程install到本地仓库,供其他项目使用,拆分后将项目进行聚合,至此提出父工程的概念
创建父工程
创建好的父工程目录结构:
创建好的父工程只有pom文件,所以不需要编码,主要作用:
1.项目需要的依赖信息,在父工程中定义,子模块继承过程
2.将各模块聚合到一起
将父工程发布到本地仓库
如果在以后发布service、dao时项目报错,可检查是否将父工程发布到了本地仓库。
创建子工程
创建Maven项目
创建web项目产生的问题及解决方式(注意使用update project)
查找依赖
依赖范围(注意:provided)
打包出现servlet-api冲突问题的解决
改善方法
传递依赖的范围
运行调试Maven项目
直接运行:
调试运行(注意要resource关联源码,不然不能运行):
右键---》Debug As---》Maven build…()