一、Maven是什么?
Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
功能:项目构建、依赖
二、Maven基础概念
1、仓库
用于储存资源,包含各种jar包
主要分为本地仓库(公司、个人存放jar包的仓库,连接远程仓库获取资源)与中央仓库(Maven团队维护,储存所有资源的仓库)
其中为保证调用jar包效率,我们引入中间仓库——私服(部门/公司范围内储存资源的仓库,从中央库获取资源),私服可以利用间接获取的方式更快、更高效的去获取jar包。
私服的作用:保存具有版权的资源,仅对范围内共享资源,对内部开放,不对外共享。
2、坐标
-
为什么引入坐标?
资源量巨大,需要查找相关资源需要坐标引导
-
什么是坐标?
Maven中的坐标用于描述仓库中资源的位置,它使用唯一标识,唯一性定位资源,通过该标识可以将资源的识别与下载工作交由机器完成
-
Maven坐标主要组成
-
groupld:定义当前Maven项目隶属组织名称(例:com.zhujiantao)
-
artifactld:定义当前Maven项目名称(通常是模块名称,例:CRM、SMS等)
-
version:定义当前项目版本号
-
<!-- https://mvnrepository.com/artifact/com.vaadin/flow --> <dependency> <groupId>com.vaadin</groupId> <artifactId>flow</artifactId> <version>9.0.16</version> <type>pom</type> <scope>provided</scope> </dependency>
3、Maven项目构建
4、依赖管理
-
依赖具有传递性(相对而言)
-
直接依赖:在当前项目中通过依赖配置建立的依赖关系
-
间接依赖:被依赖资源的资源如果依赖其他资源,当前资源简介依赖其他资源
-
-
-
依赖传递冲突问题:
-
路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
-
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
-
-
可选依赖:
隐藏依赖关系
<optional>true<optional>
-
排除依赖
-
依赖范围
依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
作用范围
-
主程序范围有效(main文件夹范围内)
-
测试程序范围有效(test文件夹范围内)
-
是否参与打包(package指令范围内)
-