目录
Maven创建Web项目并使用Tomcat本地服务器和集成服务器_小钟要学习!!!的博客-CSDN博客_maven创建web项目5.2 Web项目的结构
一、Maven安装配置
maven安装及配置(详细版)_伏加特遇上西柚的博客-CSDN博客_maven安装配置
二、GAV解释
一个Maven工具可以同时为多个工程提供jar服务,为了区分java工程,Maven工具要求每一个申请帮助的Java工程都必须拥有【一个唯一的编号】,为了确保Java工程中编号是唯一的。Maven要求每一个工程的ID编号必须由三部分组成: 组织名.项目名.版本号
- <groupId>组织名</groupId>
- <artifactId>项目名</artifactId>
- <version>版本号</version>
GAV专业上被称为Maven工程的坐标
三、Maven项目结构
四、pom.xml内部结构
五、Maven项目的创建
1、
2、
3、
4、
5、idea设置:pom文件设置dependency自动下载对应jar包
Maven公共仓库:https://mvnrepository.com/
5.1 maven web项目创建
Maven创建Web项目并使用Tomcat本地服务器和集成服务器_小钟要学习!!!的博客-CSDN博客_maven创建web项目5.2 Web项目的结构
六、Maven构建周期管理命令
(一)、项目构建周期
项目中服务(service)开发完毕后,要进行的一系列活动
(二)、具体命令
1、validate
通知Maven工具检测当前项目中pom.xml文件格式是否正确
例如:我们将pom文件中,可以写错一个标签
我们删除w,再次点击vaildate,提示成功
我们在cmd使用命令,也可以发现
2、 compile
编译命令
- 第一步:通知Maven工具将main/java文件夹所有的java文件变为class文件
- 第二步: 通知Maven将生成class文件存储target/classes
使用命令方式:
3、clean 清理命令
通知Maven工具将当前工程中target文件夹进行删除
使用命令方式:
4、test 测试命令
- 第一步:通知Maven将工程中test/java文件中所有的测试类编译为class文件
- 第二步:通知Maven将测试用的class保存到target/test-classes
- 第三步:通知Maven将所有的测试方法跑一遍
- 第四步:通知Maven将测试结果生成一个测试报告存入到target文件(surefire-report)
使用命令的方式:
5、pakcage 打包命令
将项目中main/java文件中所有的java文件编译为class并大成jar包,保存到target文件夹
- 第一步: 先test进行测试
- 第二步: 在compile编译文件
- 第三步: package将class(entity/util/dao/service) 打成jar包
使用mvn package命令方式:
6、install 安装命令
将项目达成jar包,保存到本地仓库
其他项目想要使用,直接在pom.xml文件中,关联项目的GAV就可以使用
七、jar包冲突解决
(一)、什么是jar包冲突
依赖冲突指当模块中引入很多jar包时,如果其中存在着groupId和artifactId 一样,但是version不一样的两个jar包,这就是依赖冲突。
例如:
A--->E
A--->B
B---->C----->D_1.1(TestD类有method1)
E--->D_1.2(TestD类取消method1)
项目A同时依赖项目B和项目E
项目B依赖项目C,项目C依赖D_1.1项目
项目E依赖D_1.2
此时在项目A中通过D调用method1时就会抛出java.lang.NoSuchMethodException异常,这就是”jar包冲突”;
(二)、jar包冲突解决方案
- 最短路径优先原则
- 最先声明优先原则
- 依赖排除
- 版本号绑定方案
1、最短路径优先原则
A---->B------>C--->D_1.1(TestD有Method1)
A---->E--->D_1.2(TestD没有Method1)
项目A向Maven工具索要TestD类。由于路径不同,maven遵循路径短优先,因此它会找到D_1.2版本,TestD中没有Method1方法;
2、最先声明优先规则
A--->B---->D_1.1(TestD 有Method1)
A--->E---->D_1.2(TestD 没有Method1)
项目A向Maven工具索要TestD类。由于路径相等,此时maven遵循声明的优先规则,谁最后声明(pom.xml文件下面),maven找谁。因此maven会找D_1.2的TestD类的方法;