为什么要用maven?

小灰灰 2024-03-31 11:16 167阅读 0赞

目录

  1. 为什么要用Maven

  2. Maven是什么?

  3. 图解Maven

3.1 仓库

3.2 本地仓库

3.3 Maven 依赖搜索顺序

3.4 镜像仓库配置

  1. Maven的基础概念

4.1 坐标

4.2 坐标的主要组成

4.3 Maven坐标的作用


1. 为什么要用Maven?

首先分析以下传统项目管理状态

1f8b346ed5474728b5a3a5ce893e778a.png

在一个项目的开发过程中,会用到很多jar包,会把整个项目拆分给很多人做,那么就有可能出现以下问题;

1)项目用到了MyBatis框架而MyBatis又用到了JUnit,那么当MyBatis进行升级时,JUnit的也要随之修改不然会导致——> jar包不同意,jar包不兼容

2)在做项目时,你同事负责的部分进行了功能升级,但并没有通知你;但你负责的部分与他做的又有所联系,那么这时整个项目就有可能会出问题 ——>工程升级维护过程操作繁琐

3)不同人在不同的环境下开发,有的在Windows下、有的在MocOS下,最终项目完成后要放在服务器上发布,而服务器一般用的都是Linux系统;那么在Windows开发打包到到MocOS下一定会出问题(比如String类的getBytes()f方法在Windows下和MocOS得到的结果就不同),那么这时整个项目就有可能会出问题。——>工程升级维护过程操作繁琐

···········

综上传统项目管理会遇到很多问题,导致项目维护升级很繁琐,那么怎末解决呢?

-—>Maven就出现了

2. Maven是什么?

50bdbda7c2af44ffa1e1f1a33dfd5ba8.jpeg

1)Maven 翻译为”专家”、”内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。

2)Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

3)Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。

4)统一开发结构,提供标准的,统一的项目结构

87a42cacbc234949a5776e19412db224.png

" class="reference-link">3. 图解Mavenc44e9de2f2b74a9aafcbb9bf13843df7.png

1)pom.xml配置文件,一个项目有一个xml配置文件

2)3884fca77a6c4e7688aab79d92a3171b.png

项目对象里面需要什么东西,靠依赖管理来做;

箭头是双向的意味着,你做的东西也可以被Maven所管理(通俗点说,你用别人的时候,别人是资源;别人用你的时候,你就是资源二者均是同通过坐标来引用对方的)

3)0a744c29c02941af802d7b7934d4c52a.png

依赖管理所用到的资源储存在本地仓库—>私服仓库—>中央仓库

3.1 仓库

5af5cf6cf570462fb3967247e95d2cd3.png

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文件

默认位置:

  1. <localRepository>${user.home}/.m2/repository</localRepository>

自定义位置:(可根据需求自定义)

  1. <localRepository>D:\maven\repository</localRepository>

" class="reference-link">c81eb72e5b084f7c8f6faf8a86f152fb.png

3.3 Maven 依赖搜索顺序

当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

  • 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
  • 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
  • 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
  • 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

3.4 镜像仓库配置

Maven 阿里云(Aliyun)仓库

由于Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。

修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:

  1. <!-- 配置具体的仓库下载镜像 -->
  2. <mirror>
  3. <!-- 此镜像的唯一标识符,用来区分不同的mirror元素 -->
  4. <id>aliyunmaven</id>
  5. <!-- 对哪种仓库进行镜像,简单来说就是替代哪个仓库 -->
  6. <mirrorOf>central</mirrorOf>
  7. <!-- 镜像名称 -->
  8. <name>阿里云公共仓库</name>
  9. <!-- 镜像URL -->
  10. <url>https://maven.aliyun.com/repository/public</url>
  11. </mirror>

打开下载好的maven下conf/setting.xml文件

" class="reference-link">f0be76050fdf4c59ae1bb893b924b0e7.png

配置完之后等我们下次访问中央仓库的时候就会走https://maven.aliyun.comzhan/repository/public站点,而不是国外的站点

4. Maven的基础概念

提出问题:仓库中有很多资源怎么去定位?—->坐标

4.1 坐标

Maven中的坐标用于描述仓库中的资源位置

4.2 坐标的主要组成

groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)

artifactid:定义当前Maven项目名称(通常是板块名称,例如CRM、SMS)

version:定义当前项目版本号

示例

  1. <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
  2. <dependency>
  3. <groupId>redis.clients</groupId>
  4. <artifactId>jedis</artifactId>
  5. <version>4.2.3</version>
  6. </dependency>

4.3 Maven坐标的作用

使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成

坐标写完之后,Maven工具会根据坐标去查找、下载、使用资源

发表评论

表情:
评论列表 (有 0 条评论,167人围观)

还没有评论,来说两句吧...

相关阅读

    相关 为什么webpack

    单讲讲我与前端的故事吧。 刚接触前端时,所有静态资源CSS、图片和JS都是手动引入HTML页面中,这并没有什么不好,想要什么就引入什么嘛。另外,所见即所得,开发好的项...

    相关 为什么docker

    最近Docker突然火得不得了,到处都是谈论Docker的声音,相信大家和小编一样的心情,看这个东西有点高大上,但尝试去阅读Docker文章时又发现概念很模糊、不接地气、难以理

    相关 为什么promise

    1.指定回调函数的方式更加灵活: 旧的必须在启动异步任务前指定 promise:启动异步任务 =》 返回promise对象 =》 给promise对象绑定回调函数(甚至

    相关 为什么Docker

    1、什么是Docker 什么是docker?恐怕90%的人脑子一闪而过的都是那张图:一条鲸鱼背上扛着一堆箱子,图片下方是大大的“docker”。 docker是什么?

    相关 为什么Redis

    最近阅读了《Redis开发与运维》,非常不错。这里对书中的知识整理一下,方便自己回顾一下Redis的整个体系,来对相关知识点查漏补缺。 我按照五点把书中的内容进行一下整理:

    相关 为什么Redis

    最近阅读了《Redis开发与运维》,非常不错。这里对书中的知识整理一下,方便自己回顾Redis的整个体系,来对相关知识点查漏补缺。 按照五点把书中的内容进行一下整理: 1、