1.认识Maven仓库
Maven是管理项目依赖的工具,Maven仓库存储着所有依赖的jar文件,每个jar文件都有其对应的坐标(组id,构件id,版本号).运行Maven的时候,Maven所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
2.Maven仓库的分类
1.本地仓库
2.远程仓库(联网)
3.Maven私服(公司局域网)
3.原始的Maven仓库
一个原始的Maven就带了一个远程仓库,在3.xxx版本后,其位置在maven安装目录下的:/lib/maven-model-builder-${version}.jar
在idea中打开后,找到位置:\org\apache\maven\model\pom-4.0.0.xml,这个就是所有Maven POM的父POM,所有Maven项目继承该配置
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
- 注:仓库一般分为release库和snapshot库,release库存放正式版本,snapshot库存放快照版本.两者的区别:从远程仓库拉取的release版本依赖,如果远程仓库的该依赖版本升级,并且依赖的名称没有更改,那么本地项目的依赖就无法更新,比如Junit-4.10.jar,如果远程仓库版本升级,如果还采用Junit-4.10.jar名称,那么本地项目的依赖就无法更新,只有升级为Junit-4.11.jar,才会更新.
snapshot版本依赖每次都会去远程仓库中检查该依赖是否更新,即使名称一样也会去检查,如果有更新则下载到本地仓库.推荐禁止从公共仓库下载snapshot构件,因为这些构件不稳定且不受控制,避免使用.
4.pom.xml中配置多个远程仓库
项目所需的依赖,可能不在中央仓库中,可能只存在于某个特定的公共仓库,这时就需要配置多个远程仓库了.比如:
<repository>
<id>aliyun</id>
<name>aliyun Repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>jeecg</id>
<name>jeecg Repository</name>
<url>http://maven.jeecg.org/nexus/content/repositories/jeecg</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
5.settings.xml中配置镜像
从中央仓库拉取依赖慢,可以通过镜像覆盖central配置,settings.xml路径:Maven\apache-maven-3.3.9\conf
配置central中央仓库的镜像(mirrorOf标签内是什么就是什么的镜像,可以使用通配符*代替所有仓库):
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>