一、Maven仓库分类

  Maven中,仓库只分为两类:本地仓库和远程仓库。当Maven根据坐标寻找构件的时候,它首先去查看本地仓库,如果本地仓库有此构件,则直接使用,如果本地仓库不存在此构件,或者需要查看是否有更新的构件版本,Maven就会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使用。

  中央仓库是Maven核心自带的远程仓库,它包含了绝大部分开源的构件。

  企业内部通常会搭建私服为企业内部开发提供下载服务。

  私服是另一种特殊的远程仓库,为了节省的带宽和时间,应该在局域网内架设一个私有的仓库服务器,用其代理所有的外部的远程仓库。内部的项目还能部署到私服上供其它项目使用。

1、本地仓库

本地仓库默认路径为.m2/repository/

也可以自定义本地仓库目录地址(本人设置为D:\Dev\Java\maven-repo\repository)

修改maven安装路径(D:\Program Files (x86)\Apache\apache-maven-3.5.2\)config文件夹下的settings.xml文件,设置localRepository元素的值为想要的仓库地址,例如:

<localRepository>D:/Dev/Java/maven-repo/repository</localRepository>

2、远程仓库

Maven需要构件的时候,先去本地仓库找,当无法从本地仓库找到时,就会从远程仓库下载到至本地仓库,对于Maven来说,本地仓库只有一个,远程仓库却可以配置多个。

3、中央仓库

由于最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行Maven命令的时候下载到需要的构件。中央仓库就是这样一个远程的仓库,Maven的安装文件自带了中央仓库的配置。

4、私服

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,他从私服请求,如果私服上不存在此构件,则从外部的远程仓库下载,缓存到私服上之后,再为Maven的下载请求提供服务。此外,一些无法从外部仓库下载到的构建也能从本地上传到私服上供大家使用。

使用私服的好处:

a.节省自己的外网带宽;大量的对于外部仓库的重复请求会消耗很大的带宽,利用私服代理外部仓库后,在外的重复构件下载得意消除,即降低外网带宽的压力。

b.加速Maven构建:不停的连接请求外部仓库是十分耗时的,但是Maven的一些内部机制(如快照更新)要求Maven在执行构建的时候不停的检查远程仓库数据,因此,当项目配置了很多外部仓库的时候,构建的速度会被大大的降低。使用私服可以很好的解决这一问题,当Maven只需要检查局域网内私服的数据时,构建的速度很够得到很大程度的提高。

c.部署第三方构件:当某个构建无法从任何一个外部仓库获得,怎么办?这样的例子有很多,如组织内部生成的私有构建肯定无法从外部仓库获得。建立私服后,便可以将这些购进部署到内部的仓库中,供内部的Maven项目使用。

d.提高稳定性、增强控制:Maven的构建高度依赖于远程仓库,因此,当Internet不稳定的时候,Maven的构建也会变得不稳定,甚至无法构建。使用私服后,即使暂时没有Internet连接,由于私服中已经缓存了大量构件,Maven也依然可以正常运行。

e.降低中央仓库的负荷:中央仓库的压力非常大,建立私服之后,私服只需要去中央仓库下载一次

为了简化Maven本身的配置,可以将所有的配置集中到私服,对于组织内部的Maven用户来说,使用一个私服地址就等于使用了所有需要的外部仓库。这种情况下,任何需要的构件都可以从私服获得,私服就是所有仓库的镜像,这时可以配置这样一个镜像,如下所示:

   <mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

这里我们配置的镜像为阿里的私服。

照葫芦画瓢系列之Java --- Maven的配置的更多相关文章

  1. 照葫芦画瓢系列之Java --- Maven的集成和使用

    一.和Eclipse的集成 1.添加Maven 在windows--> preferences中找到maven选项,如下图: 如果没有上图的Name为apache-maven-3.5.2的项,则 ...

  2. 照葫芦画瓢系列之Java --- Maven的介绍和安装

    一.Maven是什么? Maven 是一个项目管理工具.它负责管理项目开发过程中的几乎所有的东西. 版本 maven有自己的版本定义和规则 构建 maven支持许多种的应用程序类型,对于每一种支持的应 ...

  3. 照葫芦画瓢系列之Java --- eclipse下使用maven创建Struts 2项目

    一.创建Maven项目 http://www.cnblogs.com/zhanqun/p/8425571.html 二.添加struts2核心依赖包以及其他依赖项 打开pom.xm配置界面 点击Add ...

  4. Java Maven项目之Nexus私服搭建和版本管理应用

    转载自:https://cloud.tencent.com/developer/article/1010603 1.Nexus介绍 Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓 ...

  5. Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例)

    这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...

  6. [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world

    [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world 原文链接:http://www.cnblogs.com/blog5277/ ...

  7. Java·Maven的安装与配置

    阅文时长 | 0.58分钟 字数统计 | 937.6字符 主要内容 | 1.引言&背景 2.Maven的下载与安装 3.Maven全局配置 4.Settings.xml文件的配置 5.远程仓库 ...

  8. Java开发环境配置(4)--Maven安装 环境变量配置,本地仓库配置---插件安装

    说明在前:本人用过的 luna  mars 等,都已经自带maven插件的了,以下有些文章是很老的,讲到maven插件的安装都可以忽略掉. maven安装eclipse在线配置maven搞定所有插件_ ...

  9. 配置Glassfish服务器、部署Java web项目、Maven安装配置及JDK版本匹配性问题

    错误一:在win7上通过命令asadmin start-domain启动Glassfish服务器时报错(如下): Exception in thread "main" java.l ...

随机推荐

  1. GDB dump mem example和命令

    使用方法: You can use the commands dump, append, and restore to copy data between target memory and a fi ...

  2. stc15f104w模拟串口使用

    stc15f104w单片机体积小,全8个引脚完全够一般的控制使用,最小系统也就是个电路滤波----加上一个47uf电容和一个103电容即可,但因为其是一个5V单片机,供电需要使用5V左右电源. 该款单 ...

  3. 消除第三方库moodycamel的编译器警告

    在项目中需要引入第三方无锁队列,此处我选用的是moodycamel. 然而引入头文件编译之后,一直提示报错信息,需要专门针对此文件消除编译警告(本人使用GCC编译器). 在文件头处添加如下语句: #i ...

  4. 实现quartz定时器及quartz定时器原理介绍

    今天研究定时器,在网上看了一篇不错的文章,推荐给大家! 实现quartz定时器及quartz定时器原理介绍

  5. mybatis框架(2)---mapper代理方法

    mapper代理方法 在我们在写MVC设计的时候,都会写dao层和daoimp实现层,但假如我们使用mapper代理的方法,我们就可以不用先daoimp实现类 当然这得需要遵守一些相应的规则: (1) ...

  6. logstash笔记(二)——grok之match

    官方文档: https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html 基本语法: %{SYNTAX:SEMA ...

  7. linux 命令 — cut

    cut 以列的方式格式化输出 依赖定界符 cut -f field_list filename 以默认定界符(tab,制表符)分割文件的列,输出指定的列field_list,field_list由列号 ...

  8. Dockerfile 中的 multi-stage(多阶段构建)

    在应用了容器技术的软件开发过程中,控制容器镜像的大小可是一件费时费力的事情.如果我们构建的镜像既是编译软件的环境,又是软件最终的运行环境,这是很难控制镜像大小的.所以常见的配置模式为:分别为软件的编译 ...

  9. RabbitMQ系列(四)RabbitMQ事务和Confirm发送方消息确认——深入解读

    RabbitMQ事务和Confirm发送方消息确认--深入解读 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器 ...

  10. docker常用命令2

    Docker作为一种开源的.优秀的容器化技术,目前受到越来越多公司的运用,下面是我工作中常用到的一些命令. 1.删除一个容器(删除之前先要停止该容器) docker stop 容器IDdocker r ...