一、分类

  • maven的仓库只有两大类:

    •   1.本地仓库

    • 2.远程仓库,在远程仓库中又分成了3种:

      •   2.1 中央仓库

      • 2.2 私服

      • 2.3 其它公共库

二、本地仓库

  • 本地仓库,顾名思义,就是Maven在本地存储构件的地方。
  • 注:maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建,maven本地仓库的默认位置:无论是Windows还是Linux,在用户的目录下都有一个.m2/repository/的仓库目录,这就是Maven仓库的默认位置
  • 如何更改maven默认的本地仓库的位置,修改maven的settings.xml文件中的localRepository标签值。
    <settings>
<localRepository>D:\maven_new_repository</localRepository>
</settings>

三、中央仓库

  • 中央仓库是默认的远程仓库,maven在安装的时候,自带的就是中央仓库的配置

  • 案例:修改默认中央仓库,即下载依赖包不再从默认的中央仓库中下载(虽然更新快但是下载速度慢),只需修改工程的pom.xml文件即可。

<!-- 修改中央仓库 -->
<repositories>
<repository>
<!-- 指定仓库唯一id -->
<id>resp</id>
<!-- 指定仓库名 -->
<name>resp</name>
<!-- 指定仓库地址 -->
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<!-- 设置仓库是否为默认仓库 -->
<layout>default</layout>
<!-- 设置是否可以从url对应的仓库中下载快照snapshots版本的依赖 -->
<snapshots>
<enabled>false</enabled>
</snapshots>
<!-- 设置是否可以从url对应的仓库中下载稳定releases版本的依赖 -->
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories> <!-- 修改插件仓库 -->
<pluginRepositories>
<pluginRepository>
<id>pluginTest</id>
<name>pluginTest</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
  • 此时下载依赖会在http://maven.aliyun.com/nexus/content/groups/public/和默认中央仓库两个仓库同时下载,如果想要禁止默认中央仓库下载,可以将自己设置的仓库的id设置为中央仓库的id即<id>central</id>
  • 缺点:只针对当前工程,新建工程还是从默认中央仓库下载。
  • 案例二:通过修改镜像,修改所有工程的默认中央仓库

    •   修改maven的setting.xml文件
    <mirror>
<id>mirrorId</id>
<name>aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
  •   其中 <mirrorOf>*</mirrorOf> 指对所有工程的所有仓库进行映像,即所有工程所有仓库都会无效,下载依赖时从镜像的url仓库下载。如果配置<mirrorOf>central</mirrorOf>则任何从默认中央仓库下载的依赖都会转到镜像仓库下载。

四、私服

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

  • 主要用于:  团队开发的时候,某个成员写好的工程打包成jar包存放于私服中,团队其他成员可以从私服中下载即可使用。如果没有私服,则必须拷贝jar包,然后在自己的工程中引入gav坐标才能使用,很麻烦。

  • Nexus私服的安装与搭建使用,具体步骤请参考:windows下Nexus搭建Maven私服
  • 案例: 设置maven工程从私服下载依赖

<repositories>
<repository>
<id>nexus resp</id>
<name>nexus resp</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories> <pluginRepositories>
<pluginRepository>
<id>plugin resp</id>
<name>plugin resp</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
    •     其中,<url>http://localhost:8081/nexus/content/groups/public/</url> url的地址为nexus中group的地址,即

    •     值得注意的是: 上面项目的前提是setting.xml文件不能设置镜像为如下:
    • <mirror>
      <id>mirrorId</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>

      否则maven工程将直接访问镜像所对应的仓库而不是我们的私服仓库。可以把镜像配置改为<mirrorOf>central</mirrorOf>,这样只会把中央仓库的请求转到镜像对应的仓库,而请求私服的请求是不会转到镜像对应的仓库的。

    •   一般来说,我们都把镜像对应的仓库设置为私服仓库,而私服仓库代理的仓库设置为阿里云仓库,这样当maven工程需要依赖的时候首先从本地仓库中找,如果没有则从私服中下载,如果私服不存在该依赖则把该依赖从阿里云中下载到私服。注意,maven工程install之后只会打包到本地仓库,而私服仓库是不会有的,需要手动添加。

(四)Maven中的仓库的更多相关文章

  1. 关于maven中版本控制问题

    之前我们说过Maven的版本分为快照和稳定版本,快照版本使用在开发的过程中,方便于团队内部交流学习.而所说的稳定版本,理想状态下是项目到了某个比较稳定的状态,这个稳定包含了源代码和构建都要稳定. ma ...

  2. maven 中snapshot版本和release版本的区别

    maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...

  3. maven中snapshot快照库和release发布库的区别和作用

    在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...

  4. maven中snapshot快照库和release发布库的区别和作用 (转)

    Maven介绍,包括作用.核心概念.用法.常用命令.扩展及配置 http://www.trinea.cn/android/maven/ 本文来源于铁木箱子的博客http://www.mzone.cc ...

  5. Maven实战读书笔记(二):Maven坐标与仓库

    2.1 Maven坐标 Maven坐标是Maven用来表示一个组件依赖的标示. Maven通过下面几个元素定义坐标:groupId.artifactId.version.packaging.class ...

  6. maven中在本地maven仓库添加jar包

    Maven 手动添加 JAR 包到本地仓库 Maven 确确实实是个好东西,用来管理项目显得很方便,但是如果是通过 Maven 来远程下载 JAR 包的话,我宿舍的带宽是4兆的,4个人共用,有时候用  ...

  7. Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】

    搭建私有服务器 前面已经说过了,我们使用Maven的使用,如果需要导入相对应的jar包,Maven首先会在我们的本地仓库中寻找->私有仓库->中心仓库- 然而,我们的本地仓库常常没有想要的 ...

  8. maven 在pom.xml 中指定仓库位置

    ...... 在pom.xml 中添加 仓库位置(这样遇到私服没有的依赖,就会去这下载) </properties> <repositories><!-- 代码库 --& ...

  9. maven中的坐标和仓库

    1.坐标 pom.xml中的groupId.artifactId和version都可以构成项目的坐标. <dependency>    <groupId></groupI ...

随机推荐

  1. 深度学习: 学习率 (learning rate)

    Introduction 学习率 (learning rate),控制 模型的 学习进度 : lr 即 stride (步长) ,即反向传播算法中的 ηη : ωn←ωn−η∂L∂ωnωn←ωn−η∂ ...

  2. 在IntelliJ IDEA中启动tomcat出现Can't load AMD 64-bit .dll on a IA 32-bit' platform问题详解

    第一查看jdk版本 第二查看IntelliJ IDEA中运行tomcat的配置的jdk 比较两个jdk版本是否一致.或者查看tomcat是64还是32位的

  3. Redis搭建集群

  4. 请求头User-Agent作用?

    请求头User-Agent作用 答: User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA.它是一个特殊字符串头,是一种向访问网站提供你所 ...

  5. 自定义string类

    #include <iostream> #include <cstring> using namespace std; class String; class Data{ // ...

  6. Promise和Generator

    异同: 1.promise解决的是串行的嵌套异步问题. 2.yield把Generator Function切割为有多个出口的Generation. 3.Promise是社区的研发产物,yield是E ...

  7. [MongoDB教程] 2.MongoDB的安装与使用

    下载mongodb的版本,两点注意 根据业界规则,偶数为稳定版,如3.2.X:奇数为开发版,如3.3.X 32bit的mongodb最大只能存放2G的数据,64bit就没有限制 MongoDB官网安装 ...

  8. spark实现wordcount

    spark-shell --master yarnsc:val lineRDD=sc.textFile("/test/input/test")lineRDD.collect().f ...

  9. SMOS数据产品介绍与下载方法

    1. SMOS数据介绍 The Soil Moisture and Ocean Salinity (SMOS) 卫星是欧空局发射的一颗以探测地球土壤水含量以及海表盐度为目标的卫星,卫星所搭载的唯一载荷 ...

  10. element form 校验数组每一项

    1.校验的数据结构如下: 2.html结构 <el-dialog :title="title" :visible.sync="visable" width ...