登录
原创

maven 仓库加载顺序

发布于 2020-12-18 阅读 1620
  • 后端
  • Java
原创

Maven仓库主要有2种:

remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问
local repository:存放在本地磁盘的一个文件夹

Remote Repository主要有3种

中央仓库:http://repo1.maven.org/maven2/ 
私服:内网自建的maven repository,其URL是一个内部网址,settings里面profile中设置的仓库 
其他公共仓库:其他可以互联网公共访问maven repository,例如 jboss repository等

repository里存放的都是各种jar包和maven插件。当向仓库请求插件或依赖的时候,会先检查local repository,如果local repository有则直接返回,否则会向remote repository请求,并缓存到local repository。也可以把做的东西放到本地仓库,仅供本地使用;或上传到远程仓库,供大家使用。 

Mirror

mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。
<mirrorOf></mirrorOf>标签里面放置的是要被镜像的Repository ID。为了满足一些复杂的需求,Maven还支持更高级的镜像配置:
<mirrorOf></mirrorOf> 匹配所有远程仓库,一般我们不这样配置,要不然所有请求都转发到该镜像地址了。
<mirrorOf>repo1,repo2</mirrorOf> 匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
<mirrorOf>
,!repo1</miiroOf> 匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

私服

私服是一种特殊的远程Maven仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的Maven用户使用。
当Maven需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为Maven下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。通过如下配置激活该仓库.
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>

注: 如果maven pom项目中配置了repository,配置文件中配置了镜像,也配置了私服(repository),那用户所需的jar或插件从哪个仓库查询呢?

通过测试: 首先会从本地仓库查询,然后查询配置文件里面的repository,没找到接着查询pom配置的仓库,还没找到接着查询mirror镜像中的仓库,所以他们的优先级是本地仓库 > 私服 > pom仓库 > 镜像

评论区

梦飞
0粉丝

励志做一条安静的咸鱼,从此走上人生巅峰。

0

0

0

举报