Maven

目录

一、Maven安装配置

二、GAV解释

三、Maven项目结构

 四、pom.xml内部结构

​编辑 五、Maven项目的创建

5.1 maven web项目创建

Maven创建Web项目并使用Tomcat本地服务器和集成服务器_小钟要学习!!!的博客-CSDN博客_maven创建web项目5.2 Web项目的结构

​编辑 

六、Maven构建周期管理命令

 (一)、项目构建周期

(二)、具体命令

1、validate

2、 compile 

 3、clean 清理命令

 4、test 测试命令

 5、pakcage 打包命令

 6、install 安装命令

七、jar包冲突解决 

(一)、什么是jar包冲突

(二)、jar包冲突解决方案

1、最短路径优先原则

2、最先声明优先规则


一、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. 最短路径优先原则
  2. 最先声明优先原则
  3. 依赖排除
  4. 版本号绑定方案

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类的方法;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值