maven是什么?
Maven是一款服务于Java平台的自动化构建工具。Maven 作为 Java 项目管理工具,它不仅可以用作包管理,还有许多的插件,可以支持整个项目的开发、打包、测试及部署等一系列行为。如果不使用maven工具的话,我们要用到一个jar包是,要把jar包下载到本地,然后手动的指定给项目,而且jar包之间有可能会产生冲突,我们还要考虑依赖冲突问题。简单点来说,Maven其实就是一个项目管理工具,可以更好的管理项目的jar包,同时maven也能管理项目的生命周期
一、仓库
仓库很好理解,我们在使用maven时,不用自己导jar包,只需要提供坐标,这个坐标,就是指向仓库中jar包的位置,而仓库,就是存库jar包的地方
仓库又分为三种,分别为:本地仓库、私服仓库、中央仓库
本地仓库 :
存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包优先从本 地仓库 查找默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录 。
私服的作用:
保存具有版权的资源,包含购买或自主研发的jar 中央仓库中的jar都是开源的,不能存储具有版权的资源 定范围内共享资源,仅对内部开放,不对外共享。
中央仓库:
服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包它包含了世界上大部分流行的开源项目构件。 中央仓库: Maven团队维护,存储所有资源的仓库 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源 。
二、坐标
含义:Maven中用于描述仓库资源的位置
坐标的组成:
groupId:当前组织名
<groupid>corg.projectlombok</groupid>
artifactId:定义当前Maven项目名
<artifactid>lombok</artifactid>
Version:定义当前版本号
<version>1.18.24</version>
使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成。
三、Maven依赖
传递性
直接依赖:在当前项目中通过依赖配置建立的依赖关系。
间接依赖: 被资源的资源如果依赖其他资源,当前项目间接依赖其他资源。
冲突
路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。
特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的。
可选依赖
可选依赖指对外隐藏当前所依赖的资源--不透明 <optional>true</optional>(在pom,xml中填写坐标时多添加一行)
排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本--不需要
依赖范围
依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围