`
1028826685
  • 浏览: 939137 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

Maven的Mirror和Repository 的详细讲解

 
阅读更多

1 Repository(仓库)

 

1.1 Maven仓库主要有2种:

  • remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问
  • local repository:存放在本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名}\.m2\repository目录

1.2 Remote Repository主要有3种:

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

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

2 Mirror

mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。

2.1 没有配置mirror:

 

2.2 配置mirror:

 

此时,B Repository被称为A Repository的镜像。

如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都胡够从它的镜像中获取。

2.3 <mirrorOf></mirrorOf> 

<mirrorOf></mirrorOf>标签里面放置的是要被镜像的Repository ID。为了满足一些复杂的需求,Maven还支持更高级的镜像配置: 

  • <mirrorOf>*</mirrorOf> 

            匹配所有远程仓库。 

  • <mirrorOf>repo1,repo2</mirrorOf> 

            匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。 

  • <mirrorOf>*,!repo1</miiroOf> 

            匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。 

3 Repository与Mirror

3.1 定义

其实,mirror表示的是两个Repository之间的关系,在maven配置文件(setting.xml)里配置 了<mirrors><mirror>..........</mirror></mirrors>, 即定义了两个Repository之间的镜像关系。

3.2 目的

配置两个Repository之间的镜像关系,一般是出于访问速度和下载速度考虑。

例如, 有一个项目,需要在公司和住所都编码,并在项目pom.xml配置了A Maven库。在公司,是电信网络,访问A库很快,所以maven管理依赖和插件都从A库下载;在住所,是网通网络,访问A库很慢,但是访问B库很快。这 时,在住所的setting.xml里,只要配置一 下<mirrors><mirror>....</mirror></mirrors>,让B库成为A 库的mirror,即可不用更改项目pom.xml里对于A库的相关配置。

如果该镜像仓库需要认证,则配置setting.xml中的<server></server>即可。

3.3  注意

需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,Maven仍将无法访问被镜像仓库,因而将无法下载构件。

4 私服

私服是一种特殊的远程Maven仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的Maven用户使用。

当Maven需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为Maven下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。

优点主要有:

  1. 节省外网宽带
  2. 加速Maven构建
  3. 部署第三方构件
  4. 提高稳定性、增强控制:原因是外网不稳定
  5. 降低中央仓库的负荷:原因是中央仓库访问量太大

 

PS:Maven仓库示意图

 

 

分享到:
评论

相关推荐

    maven安装详细教程.pdf

    - **解释**: 这个配置片段指定了默认激活的 JDK 版本为 1.8,并设置了编译源代码和目标代码的版本为 1.8。 #### 三、Maven 的优势 - **自动化构建**: Maven 通过自动化的构建过程简化了项目的构建流程。 - **依赖...

    搭建Maven私服,并配置Nexus环境

    接下来,我们来详细讲解如何搭建Maven私服并配置Nexus环境。 1. **安装Nexus** 下载Nexus的最新版本,如压缩包文件中的`nexus-latest-bundle.zip`。解压后,找到`bin`目录下的`nexus.exe`(Windows)或`nexus`...

    linux搭建maven私库所需的安装包.zip

    本教程将详细解释如何利用给定的安装包在Linux上创建一个Maven私有仓库。 首先,我们需要理解Maven私库的核心功能。Maven是一个广泛使用的Java项目管理和集成工具,它通过读取项目的`pom.xml`文件来处理构建过程和...

    maven-3.2.3环境的配置的压缩包

    本文将详细讲解如何配置 Maven 3.2.3 环境。 ### 1. Maven 的作用 Maven 解决了传统构建工具(如 Ant)的一些问题,如配置复杂、依赖管理繁琐等。Maven 使用一种基于 XML 的项目对象模型 (POM) 来描述项目,并自动...

    搭建maven私服的软件

    本教程将详细讲解如何搭建并使用Maven私服,主要涉及Maven 3.5.3和Nexus 3.12.1这两个版本。 首先,我们需要理解Maven私服的作用。在开发过程中,外部依赖通常来自Maven中央仓库,但是当有私有的库或者公司内部的...

    Maven 在 Windows 下安裝和配置.docx

    本文将详细讲解如何在 Windows 10 或 11 系统中安装并配置 Maven 3.8.3。 首先,访问 Maven 的官方网站(http://maven.apache.org/)或国内镜像站点(例如:...

    linux,nexus3.14+maven3.6.3.zip,搭建maven私服一步到位

    接下来,我们将分步解释如何在Linux上部署Nexus 3.14和Maven 3.6.3来建立Maven私服: ### 安装Nexus 3.14 1. 下载Nexus的Unix版本:`nexus-3.14.0-04-unix.tar.gz`。 2. 解压下载的文件:`tar -zxvf nexus-3.14.0-...

    maven4

    本文将深入探讨Maven的核心概念,包括配置远程库、理解`setting.xml`与`pom.xml`的详细信息,并给出几点关键的说明。 ### Maven核心概念 1. **依赖管理**:Maven通过读取`pom.xml`文件来管理项目的依赖关系,自动...

    maven镜像设置 settings.docx

    本文将详细讲解如何配置Maven的`settings.xml`以使用镜像。 一、`settings.xml`文件概述 `settings.xml`是Maven的配置文件,用于设置个人或全局的Maven环境参数。该文件分为用户级和全局级两种: 1. 用户级:默认...

    idea maven配置教程-maven-settings-master.zip

    本教程将详细讲解如何在Idea中配置Maven,以充分利用其功能,提高开发效率。 1. **Maven简介** Maven通过XML配置文件管理项目的依赖关系,构建过程以及项目的生命周期。它简化了项目的构建和部署,使得开发者可以...

    李兴华maven配置与使用

    以下是对Maven配置与使用的一些关键知识点的详细讲解。 1. **Maven的安装与配置** - 下载:首先,你需要从Apache Maven官方网站下载最新版本的Maven,根据操作系统选择对应的安装包。 - 安装:解压下载的压缩包到...

    maven.docx

    以下是对 Maven 搭建步骤的详细讲解: 1. **安装 Maven** Maven 的最新版本可以从其官方网站 [http://maven.apache.org/download.html](http://maven.apache.org/download.html) 下载。下载完成后,解压到您希望...

    eclipse maven 离线插件

    本文将详细讲解如何在Eclipse中安装和使用Maven离线插件,以及该插件带来的优势和使用技巧。 首先,安装Eclipse Maven离线插件涉及以下几个步骤: 1. **更新Eclipse Marketplace**:确保你的Eclipse安装了最新的...

    使用MyEclipse构建多模块Maven项目说明.doc

    本篇文章将详细讲解如何使用MyEclipse这一集成开发环境来构建多模块的Maven项目。 首先,我们需要配置Maven的环境。确保在系统环境变量中设置了`M2_HOME`和`MAVEN_HOME`,这两个变量分别指向Maven的安装路径。例如...

    相关maven的issue1

    以下是一些关于Maven的知识点,基于提供的信息进行详细解释: 1. **版本号指定**:在Maven中,当你引入外部jar包时,必须指定版本号。如果你看到某个项目没有写版本号,那是因为在父项目的`dependencyManagement`...

    apache-maven-3.6.3-bin,设置库地址

    以下将详细讲解如何设置这两个库地址。 1. **本地仓库设置** Maven默认的本地仓库路径位于用户主目录下的`.m2`文件夹,具体路径为`~/.m2/repository`(在Windows系统中通常是`%USERPROFILE%\.m2\repository`)。...

    使用Maven开发Java Web应用

    【使用Maven开发Java Web应用】是一篇关于Java Web项目构建的文章,主要讲解了如何借助Maven工具来管理和构建Web应用程序。Maven是Java开发中广泛使用的自动化构建工具,能够帮助开发者管理项目依赖,简化构建过程。...

    nexus-2.14.4-03-bundle.tar.gz搭建maven仓库

    在这个过程中,我们将详细讲解如何使用这个压缩包来配置和运行Nexus服务器。 1. **Nexus的作用**: - Maven仓库代理:Nexus可以作为Maven中央仓库的代理,加速本地开发时的依赖下载。 - 自定义仓库:用户可以创建...

    大数据平台搭建与运维课件4大数据搭建与运维(项目四).docx

    本课程的第四部分主要讲解了如何在Windows环境下安装和配置Maven,Maven是一个强大的构建工具,主要用于管理Java项目的构建、报告和依赖关系。以下是详细的知识点解析: 1. **Maven软件包下载**: - 版本选择:...

Global site tag (gtag.js) - Google Analytics