Maven的简单介绍

目录

Maven是什么

Maven解决了什么问题

Maven的作用

Maven软件构成

Maven的仓库

Maven的坐标

Maven的依赖管理


Maven是什么

   Maven 本质上是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System)和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。

        Maven将项目开发和管理过程抽象成一个项目对象模型(POM)。

Maven解决了什么问题

  1. jar包不统一不兼容问题
  2. 项目升级维护过程中操作繁琐问题

Maven的作用

  • 项目构建

        提供标准的、跨平台的自动化项目构建方式

        项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理

  • 依赖管理

 maven 项目中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar 包的坐标,在需要用到 jar 包的时候,只要查找 pom.xml 文件,再通过 pom.xml 文件中的坐标,到一个专门用于存放 jar 包的仓库(maven 仓库)中根据坐标从而找到这些 jar 包,再把这些 jar 包拿去运行

  • 统一开发结构

        提供标准的、统一的项目结构

Maven软件构成

如图所示:

  • bin:存放了 maven 的命令
  • boot:存放了一些 maven 本身的引导程序,如类加载器等
  • conf:存放了 maven 的一些配置文件,如 setting.xml 文件
  • lib:存放了 maven 本身运行所需的一些 jar 包 

Maven的仓库

maven可以通过pom.xml中的配置,就能够获取到想要的jar包,这些jar包就存放在仓库中

仓库可分为:

  • 本地仓库

Maven会将工程中依赖的资源(Jar包)从远程下载到本机的目录下进行管理。

maven默认的仓库是$user.home/.m2/repository目录。

本地仓库的位置可以在conf/setting.xml文件中修改,可以自己定义存放在哪个文件夹

项目使用一些插件或 jar 包, 优先从本地仓库查找

  • 私服(第三方仓库)

一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率,公司单独开发的私有jar可放置到私服中。(使用私服为了减少对中央仓库的访问)

注意:连接私服,需要单独配置。如果没有配置私服,默认不使用

  • 中央仓库

中央仓库:服务于整个互联网,网上地址https://repo1.maven.org/maven2/

这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。工程依赖的jar包如果本地仓库没有,默认从中央仓库下载。

由于maven的中央仓库在国外,所以下载速度比较慢,所以需要配置国内的镜像地址

 

Maven的坐标

坐标是什么:

用于描述仓库中资源的位置,可通过https://mvnrepository.com/下载需要的坐标

坐标的主要组成:

        以MySql为例:

坐标的作用:

  • 使用的唯一标识,唯一性定位资源位置
  • 通过坐标可以将资源的识别和下载工作交由maven完成

Maven的依赖管理

依赖是maven中最关键的部分,我们之所以在工程中使用Maven,就是因为它的依赖管理功能。

传统的web项目中,我们必须将项目所依赖的jar包手动BuildPath到项目中,而maven通过pom.xml文件配置要引入的jar包的坐标,再读取坐标并到仓库中加载jar包,这样我们就可以直接使用jar包,很好的避免了jar直接引入进来导致项目工程大的问题。

maven中的依赖指当前项目运行所需的jar,一个项目可以设置多个依赖,可以导入多个项目所需要的架包

例如:

 

依赖具有传递性:

让我们在使用jar时候不用考虑他依赖什么。也不担心有多余的依赖,Maven会解析各个依赖的POM,将那些必要的间接依赖,以传递性依赖的形式引入当前项目中

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖: 被资源的资源如果依赖其他资源,当前项目间接依赖其他资源

不过传递依赖可能会引起冲突

例如:
A —B ----C (1.0)
A----E ----C (2.0)
那么A可能同时依赖了不同版本的C

如何解决依赖传递冲突问题 :

  • 最短路径优先原则
  • 路径相同先声明原则
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值