Maven给我们的开发工作带来了很大的便利,也增加了项目后期的可维护性,但它同样也很复杂,学习起来比较费劲,特别是一些配置可能很难搞明白。今天在这里主要是按照我们从学习到工作再到平台化开发等这样的需求升级顺序来详细分析一下,我们为什么需要Nexus,为什么需要Mirror,以及它们都应该如何配置。
目录
一、jar包是怎么下载下来的
刚刚接触Maven时,可能我们最先学会的就是配置一下Maven的工作目录以及settings.xml文件,其他的配置可能要用了一段时间之后才学会怎么配置。这时我们应该都有一个疑问,当我们保存pom.xml文件后,jar包为什么就自动下载下来了?
这其实跟pom.xml文件的继承有关,所有的maven项目中的pom.xml都继承了super pom.xml,那么super pom.xml的位置在哪里呢?你可以用解压工具打开位于${MAVEN_HOME}/lib/maven-model-builder-x.x.x.jar,然后访问路径org/apache/maven/model,在这个目录中我们可以看到一个pom-x.x.x.xml的文件,这就是super pom.xml文件。位置如下:
打开这个pom文件我们可以看到在这个pom文件中配置了一个repository,这就是我们下载的jar包所存放的源仓库,它有一个url地址,我们用浏览器可以直接访问到这个地址,为了便于区分,这个仓库还有一个repositoryId 文件内容如下:
当我们在项目中保存pom文件时,由于项目中的pom继承于这个super pom,所以maven会自动去这个中央仓库下载我们所需要的jar包,并保存在settings.xml文件配置的本地仓库中,当我们下次使用同样的maven构件时就不需要再去中央仓库下载了,它会直接去本地仓库中去查找,如果没有找到它才会去中央仓库去下载。
二、为什么需要Mirror以及MirrorOf的作用
在工作中使用Maven时,我们会发现由于Maven默认使用的中央仓库地址在国外,网络不好的时候一个jar包半天下载不下来,如果这个时候刚好又急着用的话就很悲催了,所以为了提高jar包的下载速度,我们可以为中央仓库配置一个镜像,当需要到中央仓库下载jar包时就直接访问这个镜像即可。
可能有的朋友不太明白镜像是什么意思,这里简单说明一下。首先,我们从字面意思理解一下。镜像,意为镜子里面的影