我们已经了解了Maven的环境搭建以及POM的主要标签及作用,接下来我们要讲解一下Maven的仓库以及jar下载的一个过程

首先我们要明白仓库及以下一些概念

1、仓库:
    在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
Maven核心程序仅仅定义了自动化构建项目的生命周期,但具体的构建工作是由特定的构件完成的。而且为了提高构建的效率和构件复用,maven把所有的构件统一存储在某一个位置,这个位置就叫做仓库。

2、仓库的分类:

根据仓库存储的位置,把仓库分为本地仓库和远程仓库。远程仓库分为远程中央仓库、中央仓库的镜像以及私服。

话不多说,先上一张网上的Maven仓库图

Maven我们添加相关依赖后,首先去本地仓库查找相关依赖,那么我们本地仓库地址在哪里呢?

我们的本地仓库配置就在我们maven的安装目录下 conf ----settings.xml  仓库默认地址

 <!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>

默认在根盘符下

我们可以修改仓库的地址,当然不修改也是可以的,只是放在C盘个人始终感觉别扭.

我们已经知道本地仓库的地址所在了,本地仓库里面是我们项目所依赖的jar包,全部会在本地仓库备份

因为maven的官方中央仓库因为在国外,所以我们下载依赖构建速度比较慢,推荐使用国内架设的远程仓库,下面列举一下常用仓库地址

3、常用的远程仓库:

<!--中央仓库-->
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<!--maven官方运维的2号仓库-->
<id>repo2</id>
<name>Mirror from Maven Repo2</name>
<url>http://repo2.maven.org/maven2/</url>
<!--阿里云的远程仓库-->
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!--maven在UK架设的仓库-->
<id>ui</id>
<name>Mirror from UK</name>
<url>http://uk.maven.org/maven2/</url> <!--JBoss的仓库-->
<id>jboss-public-repository-group</id>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>

4、使用profile配置远程仓库:

<profile>
<id>dev</id>
<repositories>
   <repository>
    <id>nexus-aliyun</id>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <layout>default</layout>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>
<pluginRepositories>
  <pluginRepository>
    <id>nexus-aliyun</id>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <layout>default</layout>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
    <releases>
      <updatePolicy>never</updatePolicy>
    </releases>
  </pluginRepository>
</pluginRepositories> </profile>
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>

5、镜像:用来覆盖一个远程库、或者使所有的POM都使用唯一的一个远程库,可以使用settings.xml中的mirror配置。
<!--覆盖maven自带的中央仓库-->

<mirror>
<id>UK</id>
<name>UK Central</name>
<url>http://uk.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!--配置所有仓库的镜像-->
<mirror>
<id>UK</id>
<name>UK Central</name>
<url>http://uk.maven.org/maven2</url>
<mirrorOf>*</mirrorOf>
</mirror>

maven对仓库的选择:  
  在Maven构建项目的过程中如果需要某些构件,首先会到Maven的本地仓库中查找,如果找到则可以直接使用;如果找不到,它会自动连接外网,到远程中央仓库中查找;如果远程仓库中能找到,则先把所需要的插件下载到本地仓库,然后再使用,并且下次再用到相同的插件就可以直接使用本地仓库的;如果没有外网或者远程仓库中也找不到,则构建失败。

下一章我们将会介绍Maven核心命令及相关作用,敬请期待!

Maven从入门到精通(三)的更多相关文章

  1. iOS开发-UI 从入门到精通(三)

    iOS开发-UI 从入门到精通(三)是对 iOS开发-UI 从入门到精通(一)知识点的综合练习,搭建一个简单地登陆界面,增强实战经验,为以后做开发打下坚实的基础! ※在这里我们还要强调一下,开发环境和 ...

  2. MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 多表查询 上篇博客中,我们示例的 ...

  3. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  4. Maven从入门到精通(二)

    上一篇我们讲解了Maven项目的基本目录结构,也已经安装了Maven的开发环境,接下来我们要重点讲解一下Maven最核心的灵魂pom.xml文件 POM:Project Object Model 项目 ...

  5. Maven从入门到精通(一)

    maven是一个项目管理工具,我的后续将会根据这个思维导图给大家由浅到深讲解Maven是如何管理我们的项目,以及我们如何更好的使用Maven maven在开发过程中功能主要有三个方面:   管理依赖 ...

  6. Maven从入门到精通(四)

    这一篇我会着重讲解Maven的核心命令及作用,Maven在项目构建各个阶段的作用. 1.maven生命周期模型: 1.1.清洁(clean) 1.2.默认(default) 1.3.站点(site) ...

  7. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  8. MyBatis 入门到精通(三) 高级结果映射

    MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的.虽然我们希望所有的数据库遵守第三范式或BCNF(修正的第三范式),但它们不是.如果有一个数据库能够完美映射到所有应用程序,也将是非常 ...

  9. Atom编辑器入门到精通(三) 文本编辑基础

    身为编辑器,文本编辑的功能自然是放在第一位的,此节将总结常用的文本编辑的方法和技巧,掌握这些技巧以后可以极大地提高文本编辑的效率 注意此节中用到的快捷键是Mac下的,如果你用的系统是Win或者Linu ...

随机推荐

  1. 微信小程序没找到构建npm或者没找到node_modules目录以及如何在小程序中引入vant weapp组件

    微信小程序没找到构建npm或者没找到node_modules目录解决方法如下: 按照微信小程序提供的文档npm install是不行的,直接提示没找到可构建的npm包. 1.直接安装:npm init ...

  2. 【leetcode】Department Top Three Salaries

    The Employee table holds all employees. Every employee has an Id, and there is also a column for the ...

  3. head first 设计模式笔记4-工厂模式(简单工厂、工厂方法、抽象工厂)

    1.简单工厂模式 Pizza public abstract class Pizza { abstract void prepare(); abstract void bake(); abstract ...

  4. BZOJ 4668: 冷战 并查集启发式合并/LCT

    挺好想的,最简单的方法是并查集启发式合并,加暴力跳父亲. 然而,这个代码量比较小,比较好写,所以我写了 LCT,更具挑战性. #include <cstdio> #include < ...

  5. Clojure的引用类型:var,ref,agent和atom

    作为其他值的容器,也都可以解引用. deref不会阻塞. add-watch (add-watch reference key fn) 可以定义引用值发生改变时的回调,fn是4个参数 :key (at ...

  6. Codeforces Round #325 (Div. 2) A. Alena's Schedule 暴力枚举 字符串

    A. Alena's Schedule time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. Python黑科技神奇去除马赛克

    图片修复程序-可用于水印去除 在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以 ...

  8. RedisTemplate与zset

      Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有 ...

  9. 如何将JS中object转换为字符串

    var obj = JSON.parse(str); //由JSON字符串转换为JSON对象 var last=obj.toJSONString(); //将JSON对象转化为JSON字符 或者 va ...

  10. SpringBoot导入导出Excel到Mysql

    2018.11.11 10:44:52字数 96阅读 1320 一.包的引用 除了引用SpringBoot基本包之外,还需要引入对Excel操作的包,如下: <dependency> &l ...