`

深入比较几种maven仓库的优先级

 
阅读更多

深入比较几种maven仓库的优先级

在maven中主要有以下几种仓库的设置,本地仓库,settings里面profile中设置的仓库,mirror仓库,pom文件中的repository。下面将和大家一起探讨和比较下这几种仓库的优先级别。

这里我们有三个仓库 :

远程222.197.xxx仓库

localhost镜像,是我自己在本机搭建的一个仓库

nexus仓库,是nexus官方的仓库

首先考虑这样一种情况:maven本地仓库中拥有该包,而中央仓库、mirror仓库、profile仓库、pom中仓库均不含该包。我们可以看到maven直接首先从本地仓库中找到该包,编译成功。

 

由此可以看出,本地仓库拥有最高的优先级。

接下来,我们继续剩下的仓库的优先级,(下面所有情况,都默认本地不拥有我们需要的包)剩下的仓库都是远程仓库,这里我们设定mirror设置的镜像仓库是中央仓库的镜像。那么就可以把mirror当成中央仓库,因为其已经被mirror替换了。

这次的场景为:pom文件中定义的仓库(repository)(即远程:222.197.xxx)拥有该包,而mirror(localhost镜像)和profile(nexus仓库)中的仓库不拥有该包。进行测试:

 

从这个结果可以看出,maven首先调用了profile中的仓库,其次找到了pom文件中设置的仓库。而mirror没有出现。我们这里可以初步推测优先级别为:profile > pom > mirror,为了验证我们的判断,我们需要在进行一次测试来验证这个结果。

场景如下:mirror中拥有该包(222.197),而pom(localhost镜像)和profile(nexus仓库)中均不含有该包。进行测试:

 

实际情况的确验证了我们的猜想。那么我们得出这几种maven仓库的优先级别为:

本地仓库 >profile > pom中的repository > mirror

注意:我也验证过这样的情况,将mirror这样设置:

<mirror>

<id>huacloud-central</id>

<mirrorOf>*</mirrorOf>

<name>name-of-this</name>

<url>http://222.197.XXXXXX/nexus/content/groups/public/</url>

 </mirror>

即是表示该仓库地址为所有仓库的镜像,那么这个时候,maven会忽略掉其他设置的各种类型仓库仓库,只在mirror里面找。所以建议不要这样设置,他将导致pom文件中、pforile里面的仓库设置都失效。

随便科普一下几种仓库的设置吧:

pom中的repository:

<repositories>

<repository>

<id>dsdf</id>

<releases>

<enabled>true</enabled>

</releases>

<url>http://222.197.XXXXXX/nexus/content/groups/public/</url>

</repository>

 </repositories>

profile中的仓库是在maven的设置文件(maven安装目录/conf/settings.xml)

<profile>

 <id>nexus</id>

 <repositories>

 <repository>

 <id>sonatype-forge</id>

 <url>http://repository.sonatype.org/content/groups/forge/</url>

 <releases>

 <enabled>true</enabled>

 </releases>

 <snapshots>

 <enabled>true</enabled>

 </snapshots>

 </repository>

 </repositories>

 <pluginRepositories>

 <pluginRepository>

 <id>sonatype-forge</id>

 <url>http://repository.sonatype.org/content/groups/forge/</url>

 <releases>

 <enabled>true</enabled>

 </releases>

 <snapshots>

 <enabled>true</enabled>

 </snapshots>

 </pluginRepository>

 </pluginRepositories>

 </profile>

 </profiles>

 

<!-- 使用下面代码来激活profile-->

 

<activeProfiles>

<activeProfile>nexus</activeProfile>

 </activeProfiles>

分享到:
评论
1 楼 xkxq 2016-03-06  
pom中应该大于profile中的吧

相关推荐

    maven仓库清理命令

    maven仓库清理命令

    nexus 搭建 maven仓库

    nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库

    settings.xml,本地maven仓库配置

    settings.xml,本地maven仓库配置,注意:D:\maven\repository为我本地的maven仓库路径,改成你的。 settings.xml,本地maven仓库配置,注意:D:\maven\repository为我本地的maven仓库路径,改成你的。 settings.xml...

    超全面搭建Maven仓库

    超全面搭建Maven仓库:Maven环境变量配置,Maven仓库创建(本地资源库,中央资源库),Eclipse内配置Maven环境

    Maven很Maven仓库

    主要是spring4.0.5和mybatis等等jar,之前我配置maven都配置了两天,现在放上来方便大家吧,Maven和maven仓库,

    maven新版本地仓库

    Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。 在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。 Maven 仓库能帮助我们管理构件(主要是...较为新版的maven仓库,值得拥有.

    清理本地和远程maven仓库repository中的无效或者垃圾版本文件lastUpdated、_remote等

    1、工具作用:清理本地和远程maven仓库repository中的无效或者垃圾版本文件lastUpdated、_maven.repositories*、_remote.repositories; 2、使用方法1:在本地仓库repository文件夹中右键,打开Git Bahs Here命令...

    将本地jar上传到maven仓库

    将本地jar包上传到maven仓库,刷新仓库后即可使用

    删除maven仓库中的失败文件

    删除maven仓库中的失败文件

    java-maven本地仓库包大全

    java-maven-repository本地仓库包大全,这是本人整理的比较全的,分享出来

    Maven: 仓库搜索服务

    如何输入关键字,寻找需要依赖jar的MAVEN坐标,需要提供确切的MAVEN坐标 1.Sonatype Nexus 地址: https://repository.sonatype.org 2. Jarvana 地址: http://www.jarvana.com/jarvana 3.MVNbrowser 地址: ...

    maven 仓库清理工具

    maven 仓库中的失败文件过多...如何处理? 本工具 为开发者提供 maven 仓库的失败文件清理。减少maven仓库的大小,使得重构索引成功的效率 提高!只需要配置自己的maven仓库地址即可!!!

    maven本地仓库下载

    maven本地仓库下载

    Maven仓库链接下载

    Maven仓库链接下载

    详解如何将本地JAR包添加到本地Maven仓库中

    详解如何将本地JAR包添加到本地Maven仓库中 有些时候,当我们需要在自己的maven工程中添加一个确定的jar而发现Maven中央仓库不存在时,但是我们自己手上有这些需要的jar包,那么我们可以自给自足,把这个jar包添加到...

    多镜像maven仓库配置文件

    多镜像maven仓库配置文件,实测可用,下载后修改节点路径即可使用

    maven仓库清理程序

    删除maven仓库以.lastupdated结尾的文件,删除maven仓库下的所有_remote.repositories文件

    阿里maven仓库配置信息

    阿里巴巴官方maven仓库配置,里面还包含B站仓库,修改本地仓库路径即可使用,支持的jdk版本为1.8

    maven本地仓库

    maven本地仓库,里面基本有大部分工程所需要的jar包和我自己初学maven时候记录的一些笔记

    maven.rar=maven安装包+maven仓库

    此压缩包包括maven安装包以及常用的jar包,众所周知,maven仓库绝对是经常的积累,来之不易,所以,有需要的小伙伴千万不要放过。

Global site tag (gtag.js) - Google Analytics