`

深入比较几种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仓库清理命令

    Maven很Maven仓库

    【Maven很Maven仓库】这个标题暗示了讨论的核心是关于Maven以及它与Maven仓库的关系。Maven是一个在Java开发中广泛使用的项目管理和综合工具,它通过一个声明式的配置来管理项目的构建、报告和文档。Maven仓库则是...

    超全面搭建Maven仓库

    ### 超全面搭建Maven仓库 Maven是一款强大的项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。本文将详细介绍如何搭建Maven环境、配置Maven仓库以及在Eclipse中集成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仓库分为本地仓库、远程仓库和中央仓库。本地仓库是每个开发者机器上默认创建的,用于存储已下载的依赖;远程仓库可以是...

    Maven: 仓库搜索服务

    当你需要引入新的库或jar包到你的项目中时,Maven仓库搜索服务就显得尤为重要。本文将详细介绍如何利用Maven仓库搜索服务来查找并获取所需的依赖坐标。 Maven依赖的基本格式是groupId:artifactId:version,它由三...

    2024版Maven仓库清除工具

    Maven仓库在Java开发中扮演着至关重要的角色,它是一个存储库,用于管理和构建Java项目,包含各种依赖项如JAR文件、源代码、文档等。然而,随着时间的推移,Maven仓库可能会积累大量不再使用的或者过时的依赖,这...

    maven本地仓库

    Maven仓库分为三种类型:本地仓库(Local Repository)、远程仓库(Remote Repository)和中央仓库(Central Repository)。本地仓库是默认的首要资源,Maven首先在这里查找项目依赖。如果找不到,它会尝试从远程...

    maven仓库jar包

    Maven仓库是Java开发中至关重要的一个组成部分,它是一个集中存储各种软件构件(如JAR包)的中央仓库,便于开发者获取、管理和分享依赖。Maven通过配置项目构建的POM.xml文件,能够自动从仓库中下载所需的jar包,极...

    maven仓库清理程序

    ** Maven仓库清理程序详解 ** Maven仓库是Java开发者在构建项目时不可或缺的一部分,它存储了项目的依赖库,包括JAR文件和其他构建资源。随着时间的推移,Maven仓库可能会积累大量的缓存文件,这些文件可能包括以"....

    一键清除maven仓库中下载失败的jar包的实现方法

    一键清除maven仓库中下载失败的jar包的实现方法 在Maven项目中,下载失败的jar包是一个常见的问题,它们会占用磁盘空间,影响开发效率和心情。因此,清除这些下载失败的jar包变得非常重要。本文将详细介绍如何使用...

    java-maven本地仓库包大全

    这个"java-maven-repository本地仓库包大全"就是一种备份或补充,它提供了一站式的解决方案,避免了因网络问题导致的下载失败,提高了开发效率。 包大全中的文件名称通常遵循Maven的坐标系统,包括groupId、...

    Maven仓库管理-Nexus

    Maven仓库管理-Nexus Maven仓库管理是Maven的核心概念之一,它解决了使用 Ant 时期的 jar 包管理问题。Maven 仓库的初衷是为了解决版本管理的问题,通过 Group Id, Artifact Id, version 来管理 jar 包,实现了依赖...

    Android-JarsCrawler爬取阿里maven中央仓库的所有jar包

    JarsCrawler是一款专门设计用于遍历和下载Maven仓库中所有jar包的工具。它可以帮助开发者快速获取所需库,尤其对于进行自动化构建或者研究不同库功能的开发者来说,这是一个非常实用的工具。通过JarsCrawler,我们...

    maven仓库 jar包

    在Java开发中,Maven仓库是一个至关重要的组成部分,它存储了大量的jar包,这些包包含了各种预编译的类和库,使得开发者无需从零开始构建项目。Maven仓库分为本地仓库、中央仓库和远程仓库,其中"maven-repository...

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

    Maven仓库是Maven系统的核心组成部分,用于存储和检索项目依赖的jar包。它分为本地仓库和远程仓库: 1. **本地仓库**:默认位于用户主目录下的`.m2\repository`,Maven首次构建项目时,会从远程仓库下载所需的jar包...

    设置Maven仓库-Artifactory

    设置Maven仓库-Artifactory Maven 是 Java 开发者中流行的构建工具,可以帮助减少构建应用程序时所依赖的软件构件的副本。Maven 建议的方法是将所有软件构件存储于一个叫做 repository 的远程仓库中。设置内部 ...

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

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

    maven仓库清除工具.rar

    然而,在实际操作中,由于网络问题或依赖冲突,Maven仓库可能会出现下载不完整或者失败的资源,这将导致构建过程受阻。"maven仓库清除工具"正是为了解决这类问题而设计的。 该工具主要用于清理Maven本地仓库中的...

Global site tag (gtag.js) - Google Analytics