zoukankan      html  css  js  c++  java
  • maven依赖包和依赖仓库(2)

    按照我认为的顺序来一一讲解。

    一、maven依赖仓库

    maven的依赖仓库,是用来存放依赖包的。一共有两种依赖仓库:本地仓库和远程仓库。远程仓库又分为:中央仓库(mvn官方)、私服和其他公共仓库。

    1. 本地仓库

    本地仓库是存放在用户本地计算节点的,即笔记本或者台式机上。本地仓库默认路径是:~/.m2/repository,可以修改(但不推荐,麻烦)。虽然它是一个文件夹,但是它是由maven管理的,如果通过复制粘贴将依赖包放到本地仓库中,没有意义,maven在编译时候不会发现这个依赖包。因此,如果需要手动向本地仓库中添加依赖包,需要使用maven install 命令。

    本地仓库也会主动添加依赖包。因为编译的时候,maven首先查看的是本地仓库,再查看远程仓库或者项目中的指明的repo文件夹。因此,当maven发现本地仓库中没有给依赖包,在编译后,会主动添加该依赖包。

    本地仓库在安装完maven时是没创建,需要第一次启动maven命令后才创建,然后一直存在。

    2. 远程仓库

    2.1 中央仓库

    中央仓库是默认的远程仓库,maven自带的就是中央仓库的配置(http://repo.maven.apache.org/maven2)。中央仓库包含了绝大多数流行的开源Java构件,以及它的源码、作者信息、pom依赖复制等。一般来说,很多依赖包都可以在这里下载。

    2.2 私服 

    私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上。

    2.3 其他公共仓库

    二、依赖包坐标

    每个依赖包都有唯一的坐标,Maven根据这个坐标定义了依赖包在本地仓库或者远程仓库中的唯一存储路径。

    坐标由:groupid,artifactid和version确定。如: com/intel/gkl/gkl/0.5.2/gkl-0.5.2.jar,其中,groupid是com.intel.gkl, artifactid是gkl,version是0.5.2,依赖包的名称是gkl-0.5.2.jar.

    三、依赖包查找过程

    1. 当依赖范围是system的时候,Maven直接从本地文件系统查找依赖包(后续会说明怎么回事)。

    2. 根据依赖坐标计算仓库路径后,尝试直接从本地仓库寻找,如果发现则成功。

    3. 在本地仓库不存在相应的依赖包情况下,如果项目有创建了repo文件夹并且在pom.xml中指出,那么,在项目的repo文件夹中查找,如果发现则成功。

    4. 在本地仓库不存在相应的依赖包情况下,则遍历所有的远程仓库,发现后下载使用(这里有关于RELEASE或LATEST或者SNAPSHOT的情况,这里不再说明)。

    注明:对于3和4的顺序,不是很清楚。但是,如果没有在本地仓库中找到的在3和4中找到的依赖包,都会被复制到本地仓库中。

    部分内容摘自 http://blog.csdn.net/wanghantong/article/details/36427433

  • 相关阅读:
    Java数组分配内存空间
    Java中的数组
    Java中可变参数
    什么是方法的重载
    break语句与continue语句
    三大循环结构
    程序流程控制
    Java的运算符
    基本数据类型转换之向上转型和向下转换
    修改IIS虚拟目录名称
  • 原文地址:https://www.cnblogs.com/xingzifei/p/7426232.html
Copyright © 2011-2022 走看看