Maven 笔记

概念

1.在有maven之前是怎么管理jar包的?
jar都在项目里,导致项目都很大。而maven可以使jar包和项目分离。
2.maven是干嘛用的?
管理包依赖的。相当于python的pip。
3.maven是如何管理包的?和pip有什么区别?
maven有坐标的概念,相比之下,pip是包名+版本号来定位的,pip更简单一些。

maven仓库和项目的关系

仓库的概念

仓库就是存放jar包的地方,即我们前面说的通过pom.xml中通过设置索引来到仓库中寻找jar包
仓库分为:本地仓库,第三方仓库,中央仓库

1本地仓库 用来存储从远程仓库或者中央仓库下载的插件和jar包,项目使用一些插件或jar包 优先从本地仓库查找 默认本地仓库的位置在 user.dir/.m2/repository,{user.dir}表示 windows 用户目录。

2第三方仓库 又称为内部中心仓库,又称为私服 私服:一般由公司自己设立,只为本公司内部共享使用,它既可以作为公司内部构建协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率使用私服为了减少对中央仓库的访问私服可以使用的是局域网,中央仓库必须使用外网。也就是一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。 注意:连接私服,需要单独配置。如果没有配置私服,默认不使用

3中央仓库在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它含了世界上大部分流行的开源项目构件。

获取jar包的过程
优先从本地仓库查找,如果本地仓库没有该jar包,如果配置了私服,就从私服中查找,私服中没有就从中央仓库中查找,然后下载到本地仓库,下次使用就可以直接从本地仓库中查找,没有配置私服则,直接从中央仓库中查找

maven仓库关系.png

本地仓库配置

本地仓库默认位置在 当前用户名\.m2\repository,这个位置可以自定义,但是不建议大家自定义这个地址,有几个原因:

虽然所有的本地的 jar 都放在这个仓库中,但是并不会占用很大的空间。
默认的位置比较隐蔽,不容易碰到
技术上来说,当然是可以自定义本地仓库位置的,在 conf/settings.xml 中自定义本地仓库位置:

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9HdnRER0tLNHVZbTB2aWFoZWxEaWJPUXp0a0Qwd2FpYzd4ejNCY0lyVUZQR2ZwajdMQjlkRmliUkREMm00eGZZWnAwV1g5cVl3SzA4UWppYWE0SGd3bGxZTVBRLzY0MA-unoirj.png

远程镜像配置

由于默认的中央仓库下载较慢,因此,也可以将远程仓库地址改为阿里巴巴的仓库地址:

1
2
3
4
5
6
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

这段配置,加在 settings.xml 中的 mirrors 节点中:

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9HdnRER0tLNHVZbTB2aWFoZWxEaWJPUXp0a0Qwd2FpYzd4enJqOVhicEpKQzczeFNpYWtxaGY0SGw5TFlHbjdUcHMzU0hEY0lrR2xvN2tEaGljaWFpY3ZaMVRlb1EvNjQw-dajrbd.png

下载安装

要安装Maven,可以从Maven官网下载最新的Maven 3.8.x,然后在本地解压,设置几个环境变量:

1
2
M2_HOME=/path/to/maven-3.8.x
PATH=$PATH:$M2_HOME/bin

Windows可以把 %M2_HOME%\bin添加到系统Path变量中。

然后,打开命令行窗口,输入 mvn -version,应该看到Maven的版本信息:

image.png

maven文件目录

image-saerkv.png

maven项目结构

cc3911a5db1b454ebd60e73a701dcecf~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp