一、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. SpringMVC框架二:SpringMVC与MyBatis整合

    下面整合SpringMVC和MyBatis框架,并做一个小案例 创建数据库springmvc,并创建两张表,加入一些数据: 两张表:商品表,用户表 CREATE DATABASE springmvc; ...

  2. Mybatis自定义SQL拦截器

    本博客介绍的是继承Mybatis提供的Interface接口,自定义拦截器,然后将项目中的sql拦截一下,打印到控制台. 先自定义一个拦截器 package com.muses.taoshop.com ...

  3. 工作随笔—Elasticsearch大量数据提交优化

    问题:当有大量数据提交到Elasticsearch时,怎么优化处理效率? 回答: 批量提交 当有大量数据提交的时候,建议采用批量提交. 比如在做 ELK 过程中 ,Logstash indexer 提 ...

  4. mysql 开发进阶篇系列 44 物理备份与恢复( 热备份xtrabackup 工具介绍)

    一.概述 物理备份和恢复又分为冷备份和热备份.与逻辑备份相比,它最大优点是备份和恢复的速度更快.因为物理备份的原理都是基于文件的cp. 1.1 冷备份 冷备份就是停掉数据库服务.这种物理备份一般很少使 ...

  5. 一个前端开发者换电脑的过程(git篇)

    一,安装git. 要安装git,首先得把它下载下来.去到git官网. 现在开始安装. 讲真,这些东西哪些要勾哪些不要勾我也不清楚,所以全部都按默认的来,一路next. 现在再打开vscode的终端,发 ...

  6. Java 容器 & 泛型:五、HashMap 和 TreeMap的自白

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Java 容器的文章这次应该是最后一篇了:Java 容器 系列. 今天泥瓦匠聊下 Maps. 一.Ma ...

  7. ZOJ Problem Set - 1730 Crazy Tea Party

    #include<cstdio> int main(){ int T,n; scanf("%d",&T); while(T--){ scanf("%d ...

  8. JsonBuilder初出茅庐

    互联网这股东风不久前刮到了甘凉国,国王老甘独具慧眼,想赶紧趁着东风未停大力发展移动互联网,因为他笃信布斯雷的理论:“站在风口上,猪都能飞起来”.无奈地方偏僻落后,国内无可用之才啊.老甘一筹莫展的低头凝 ...

  9. 使用docker部署flask遇到的问题

    容器内能访问,但是外网映射了端口怎么也访问不了 解决方法: app.run() 添加参数host='0.0.0.0'

  10. UVC 驱动调用过程与驱动框架的简单分析

    内核:Linux-3.4.2 驱动:drivers\media\video\uvc\uvc_driver.c UVC 驱动整体调用流程: /* 打开设备描述符 */ 1. open: uvc_v4l2 ...