Maven仓库定义
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。
Maven 仓库能帮助我们管理构件:它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
Maven仓库分类
Maven 仓库有3种类型,一种是本地仓库,一种是远程仓库,还有一种是私有仓库。
Maven寻找构件时,首先从本地仓库找,本地找不到则到远程仓库找,在远程仓库中找到了,就下载到本地仓库再使用。
下面我重点详解这3种Maven仓库使用配置。
本地仓库
一般情况下我们安装完Maven之后如果没有配置setting文件,则默认的本地仓库地址就是~/.m2/repository。
<localRepository>${user.home}/.m2/repository</localRepository>
如果我们需要修改地址仓库地址的话,可以通过修改setting文件的<localRepository>标签即可。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>C:/mikechenRepository</localRepository> </settings>
中央仓库
中央仓库是由Maven社区提供的仓库,其中包含了大量常用的库,中央仓库包含了绝大多数流行的开源Java构件。
中央仓库是Maven默认下载的仓库地址,是Maven维护的,默认的中央仓库地址是:
http://repo1.maven.org/maven2
这个地址设置在Maven的源码配置文件中,如下所示:
<repositories> <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> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories>
推荐查询maven依赖的中央仓库网站地址:
http://mvnrepository.com/ http://search.maven.org/
私有仓库
私有仓库可以理解为自己公司的仓库,也叫Nexus私服。
私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。
为什么需要私有仓库?
如果我们一个团队中有几百个人在开发一些项目,都是采用maven的方式来组织项目,那么我们每个人都需要从远程仓库中把需要依赖的构件下载到本地仓库,这对公司的网络要求也比较高。
为了节省这个宽带和加快下载速度,我们在公司内部局域网内部可以架设一台服务器,这台服务器起到一个代理的作用,公司里面的所有开发者去访问这个服务器,这台服务器将需要的构件返回给我们。
这样可以减少了大量对远程仓库的重复请求,加速Maven构建。
总体上来说私服有以下好处:
- 加速maven构件的下载速度;
- 节省宽带加速项目构建速度;
- 方便部署自己的构件以供他人使用;
- 提高maven的稳定性,如果采用私服的方式,只需要本机可以访问内网私服就可以了;
我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus。
一般使用 Sonatype Nexus较多,如果需要考虑私服,建议使用Nexus。
Sonatype Nexus官方下载地址:
https://www.sonatype.com/products/repository-oss-download
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》