目录
1. 为什么要用Maven
2. Maven是什么?
3. 图解Maven
3.1 仓库
3.2 本地仓库
3.3 Maven 依赖搜索顺序
3.4 镜像仓库配置
4. Maven的基础概念
4.1 坐标
4.2 坐标的主要组成
4.3 Maven坐标的作用
1. 为什么要用Maven?
首先分析以下传统项目管理状态
在一个项目的开发过程中,会用到很多jar包,会把整个项目拆分给很多人做,那么就有可能出现以下问题;
1)项目用到了MyBatis框架而MyBatis又用到了JUnit,那么当MyBatis进行升级时,JUnit的也要随之修改不然会导致----> jar包不同意,jar包不兼容
2)在做项目时,你同事负责的部分进行了功能升级,但并没有通知你;但你负责的部分与他做的又有所联系,那么这时整个项目就有可能会出问题 ---->工程升级维护过程操作繁琐
3)不同人在不同的环境下开发,有的在Windows下、有的在MocOS下,最终项目完成后要放在服务器上发布,而服务器一般用的都是Linux系统;那么在Windows开发打包到到MocOS下一定会出问题(比如String类的getBytes()f方法在Windows下和MocOS得到的结果就不同),那么这时整个项目就有可能会出问题。---->工程升级维护过程操作繁琐
···········
综上传统项目管理会遇到很多问题,导致项目维护升级很繁琐,那么怎末解决呢?
--->Maven就出现了
2. Maven是什么?
1)Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
2)Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
3)Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。
4)统一开发结构,提供标准的,统一的项目结构
3. 图解Maven
1)pom.xml配置文件,一个项目有一个xml配置文件
2)
项目对象里面需要什么东西,靠依赖管理来做;
箭头是双向的意味着,你做的东西也可以被Maven所管理(通俗点说,你用别人的时候,别人是资源;别人用你的时候,你就是资源二者均是同通过坐标来引用对方的)
3)
依赖管理所用到的资源储存在本地仓库-->私服仓库-->中央仓库
3.1 仓库
1)仓库:用于存储资源,包含各种jar包
2)分类:
本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
远程仓库:非本机电脑上的仓库名为本地仓库提供资源
中央仓库:由Maven团队维护,其中包含了大量常用的库
私服:部门或公司范围内存储资源的仓库,从中央仓库获取资源
3)私服的作用
保存具版权的资源,其中包含购买或自主研发的jar包,一定范围内共享资源,仅对内部开放不对外部共享
中央仓库的jar包都是开源的,不能存储有版权的资源
3.2 本地仓库
1)Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。
2)运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
3)默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/repository/ 的仓库目录。
4)本地仓库配置
Maven启动后,会自动保存下载的资源到本地仓库
打开下载好的maven下conf/setting.xml文件
默认位置:
<localRepository>${user.home}/.m2/repository</localRepository>
自定义位置:(可根据需求自定义)
<localRepository>D:\maven\repository</localRepository>
3.3 Maven 依赖搜索顺序
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
- 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
- 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
- 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
- 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
3.4 镜像仓库配置
Maven 阿里云(Aliyun)仓库
由于Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。
修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:
<!-- 配置具体的仓库下载镜像 -->
<mirror>
<!-- 此镜像的唯一标识符,用来区分不同的mirror元素 -->
<id>aliyunmaven</id>
<!-- 对哪种仓库进行镜像,简单来说就是替代哪个仓库 -->
<mirrorOf>central</mirrorOf>
<!-- 镜像名称 -->
<name>阿里云公共仓库</name>
<!-- 镜像URL -->
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
打开下载好的maven下conf/setting.xml文件
配置完之后等我们下次访问中央仓库的时候就会走https://maven.aliyun.comzhan/repository/public站点,而不是国外的站点
4. Maven的基础概念
提出问题:仓库中有很多资源怎么去定位?--->坐标
4.1 坐标
Maven中的坐标用于描述仓库中的资源位置
4.2 坐标的主要组成
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)
artifactid:定义当前Maven项目名称(通常是板块名称,例如CRM、SMS)
version:定义当前项目版本号
示例
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.2.3</version>
</dependency>
4.3 Maven坐标的作用
使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成
坐标写完之后,Maven工具会根据坐标去查找、下载、使用资源