一、分类

  • 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. 2019 SDN上级第五次作业

    1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 答:官方教程实现了一个将接收到的数据包发送到所有端口 ...

  2. MySQL实时监听——EPX 原创: 奕X 贝壳产品技术 今天

    MySQL实时监听——EPX 原创: 奕X 贝壳产品技术 今天

  3. Android向系统日历添加日程提醒事件

    在项目开发过程中,有时会有预约提醒.定时提醒等需求,这时我们可以使用系统日历来辅助提醒.通过向系统日历中写入事件.设置提醒方式(闹钟),实现到达某个特定的时间自动提醒的功能.这样做的好处是由于提醒功能 ...

  4. 设计-Int(4)和Int(11)谁更美

    设计-Int(4)和Int(11)谁更美 [缘起] 大家平时在进行数据库设计的时候,如果遇到需要存储整数类型的数据的时候,通常会优先使用Int这个整数类型,在处理20亿级别的正负数值存储上,Int类型 ...

  5. 【407】C函数中的指针

    注意:如果对于函数中指针参数的对应值进行修改,当调用该函数后,实参会被修改,所以如果不想要实参被修改,需要为函数的形参定义一个 str_copy 的量,通过 strcpy() 进行将字符串复制给 st ...

  6. CRM-项目记录

    硬件篇 阵列R5 3个盘才能做R5阵列,还需要单独的一个SSD硬盘做系统盘 软件篇 跨域问题 SPRINGMVC 配置了跨域,也使用了跨域注解,但是依然不能解决问题 最后通过直接修改TOMCAT的WE ...

  7. iOS-KVO(转)

    参考学习网址:http://blog.sina.com.cn/s/blog_71715bf8010166ut.html KVO就是NSKeyValueObserving的缩写,它也是Foundatio ...

  8. Docker镜像的构建(五)

    目录 构建镜像 1.使用 commit 命令构建 1.1 运行一个要进行修改的容器 1.2 安装 Apache 软件包 1.3 提交定制容器 2.使用 Dockerfile 构建 2.1 我们的第一个 ...

  9. 【实验】ssh私钥泄露

    翻自己的笔记看到之前做过的一个实验,一个关于ssh私钥泄露的实验,贴出来与大家交流. 做这种题脑洞需要特别大,而且也需要运气. 1.实验环境准备 2.实验流程 1)探测信息 用namp进行端口扫描,扫 ...

  10. QtCreator中打开.ui文件时卡死崩溃的解决方法

    问题 QtCreator中打开一个项目,在编辑器中打开普通的.cpp或.h等文件正常,构建正常,运行正常,但是打开ui文件(QtCreator自动调用designer)时会卡死然后崩溃退出. 解决方法 ...