(四)Maven中的仓库

摘要:
如果配置central则任何从默认中央仓库下载的依赖都会转到镜像仓库下载。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。
一、分类
  • 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在安装的时候,自带的就是中央仓库的配置
  • (四)Maven中的仓库第1张
  • 案例:修改默认中央仓库,即下载依赖包不再从默认的中央仓库中下载(虽然更新快但是下载速度慢),只需修改工程的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的地址,即

(四)Maven中的仓库第2张

    •     值得注意的是: 上面项目的前提是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中的仓库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇火狐浏览器快捷键大全Centos 7配置ntp时间同步下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Windows 7集成IE11(离线安装包、补丁)

当Win7系统需要集成IE11时,我们需要提前打入6个补丁 KB2731771、KB2786081、KB2834140、KB2670838、KB2729094、KB2533623 32位 ★百度网盘 64位 ★百度网盘 我们需要先打入这六个补丁才能改IE11 除此之外还需要IE11离线安装包 32位 ★百度网盘 64位 ★百度网盘 这六个补丁是IE11安装...

docker国内镜像地址

https://registry.docker-cn.com http://hub-mirror.c.163.com https://docker.mirrors.ustc.edu.cn 修改docker镜像地址为阿里云地址: sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <&l...

将已有项目同步到远程git仓库(github,gitee)及giteee的visual studio插件使用一二

一。将已有项目同步到远程仓库的最简便方法是用git bash: 将已有项目同步到远程仓库有两种方法:1用git bash;2.用vs插件,两者的思路和步骤基本一致的。 实验发现,如果用vs插件,bash操作的1),2),3)可合为一步为“克隆”。但克隆后无法直接使用已有文件,需要通过解决方案管理器将已有的项目文件更新到克隆的项目中,再“更改”和“同步”。...

使用deploy命令发布jar到私服仓库nexus

使用deploy命令部署jar到私服仓库nexus一 配置settings.xml因为nexus是需要登陆操作,这里配置的是具有发布权限的账号,其中id要与pom文件中的id一致。在settings.xml的<servers>里配置:<server> <id>MySnapshotNexus</id> <...

记一次阿里云服务器中部署egg遇到的问题 (docker vim)

------------恢复内容开始------------ 1.下载好egg脚手架, 在package.json 同目录 添加 Dockerfile 2.编写Dockerfile # 设置基础镜像,如果本地没有该镜像,会从Docker.io服务器pull镜像 FROM node # 设置时区 # RUN apk --update add tzdata...

【Maven】Maven之远程仓库的配置

   在很多情况下,默认的中央仓库无法满足项目的需求,可能项目需要的构件存在于另外一个远程仓库中,如Company Maven仓库。这时,可以在项目POM中或maven的settings.xml中配置该仓库 <repositories> <repository> <id>company&l...