maven基础知识点详解

前言

在以前,如果要使用到第三方的jar包,我们需要自己找到要使用的jar导入到我们的项目中,随着项目的不断扩展,对第三方jar的使用使用不断增加,对第三方jar包的管理逐渐加大了项目维护的成本。同时,有些第三方依赖在网络上并不好找,自己去网络上找的话费时费力。
而maven作为当今常用的项目依赖管理工具,大大方便了我们对依赖的管理。如果你尚未接触过maven,不妨来学习一下吧。

一、maven介绍

maven本质上就是一个项目管理工具,主要功能是在项目开发阶段对java项目进行依赖管理项目构建
依赖管理:就是对jar包的管理,我们通过导入jar包的坐标(下面会解释什么是坐标),就相当于将仓库中的jar包导入到当前项目中。简单理解的话,就是我们通过一种唯一标识,让我们项目可以根据我们的标识自动将我们要的jar引入到项目的依赖中。
项目构建:通过简单的maven命令,可以便捷的实现我们项目从清理、编译、测试、报告、打包,部署整个过程。

二、maven的仓库类型

1. 本地仓库

就是将本地的磁盘空间作为jar包的存放位置,如果项目引用到了,优先从本地仓库下载。

2. 远程仓库

maven中央仓库(地址:http://repo2.maven.org/maven2/
maven私服(公司局域网内的仓库,需要自己搭建)
其他公共远程仓库(例如apache提供的远程仓库,地址:http://repo.maven.apache.org/maven2/

三、maven的常用命令

  • clean:清理
  • compile:编译
  • test:测试
  • package:打包
  • install:安装

四、maven坐标书写规范

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>

<groupId>相当于开发组织,常见的话是公司域名颠倒,如com.jingdong
<artifactId>表示项目名称
<version>表示版本号

五、maven的依赖范围

所谓的依赖范围,就是说maven对依赖的管理范围,依赖范围从低到高分别是compile、test、provided、runtime、system。如果maven对一个jar的依赖范围只有compile的话,那么在编译的时候maven不会报错,但是在真正用到这个依赖的时候就会报错。


六、maven的依赖传递性质

在maven中,依赖是可以传递的,假设存在三个项目,分别是项目A,项目B以及项目C。假设C依赖B,B依赖A,那么我们可以根据maven项目依赖的特征不难推出项目C也依赖A。


但是依赖传递会导致依赖冲突的问题如果我引入了两个spring-webmv:4.2.4.RELEASE和spring-aop:5.0.2.RELEASE包,这两个jar包都依赖了spring-beans,但是双方依赖的版本不同,那这个时候应该使用哪一个jar包呢?
这就是依赖冲突产生的原因。
具体解决方案可见我的另一篇文章:https://www.jianshu.com/p/b6620e81f428

posted @ 2020-10-16 08:31  moutory  阅读(4)  评论(0编辑  收藏  举报  来源