美文网首页
5、Maven仓库

5、Maven仓库

作者: 噢是LJY | 来源:发表于2019-01-13 12:25 被阅读0次

1.1、仓库路径

路径的构建规则与步骤为:

1、groupId的.替换成/

2、后面加上artifactId,同样把.替换成/

3、加上version,后面带上/

4、加上artifactId,分隔符,version,如果有classifier则加上

5、最后加上扩展名

举个例子:

<dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.1</version>
</dependency></pre>

在仓库中的路径就是:org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar

http://central.maven.org/maven2/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar

1.2、仓库分类

仓库分类如下:

  • 本地仓库

  • 远程仓库

    • 中央仓库

    • 私服

    • 其它远程仓库

maven在寻找依赖时,首先在本地仓库查找对应的依赖,如果没有则会从远程仓库查找,如果没有就会报错,其他的远程仓库有JBoss库、Java.net库、阿里云库等等

1.2.1、本地仓库

安装好Maven后不会有本地仓库,只有在执行了第一条命令后才会生成本地仓库

1、本地仓库的路径一般在系统的用户目录下

Windows:系统盘符:\Users\用户名.m2\repository

Linux:/home/${用户名}/.m2/repository,linux中.开头的文件夹是隐藏的,可以用ls -a看到

2、设置本地仓库的目录:在settings.xml下的localRepository节点下设置

<localRepository>D:\maven\repository\</localRepository>

3、本地仓库中的构件的来源

  • 远程仓库下载

  • 本地install

1.2.2、远程仓库

1、当要用到某个构件时,Maven先从本地仓库找,找不到的话才会从远程仓库去寻找,本地仓库只有一个,但是远程仓库可以配置多个

2、maven的默认远程仓库地址可以在lib\maven-model-builder-3.0.jar中的pom-4.0.0.xml中看到,如下

<repositories>
      <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
      </repository>
</repositories>

3、私服:私服是架设在局域网的远程仓库,用于代理Internet上的远程仓库供局域网用户使用,当Maven要下载构件,先从私服请求,如果没有,那么再从远程仓库下载缓存到私服,然后为局域网的用户提供服务,私服具有以下好处:

  • 节省外网带宽

  • 加速Maven的构建

  • 部署第三方构件,因为有的构件不一定能从远程仓库下载到

  • 提高稳定性、增强控制(如nexus有权限控制)

  • 减小中央仓库的负荷

1.2.3、远程仓库的配置

在项目中的pom.xml中可以配置远程仓库

<project>
      ...
      <repositories>
          <repository>
              <id>central</id>
              <name>Central Repository</name>
              <url>https://repo.maven.apache.org/maven2</url>
              <release>
               <enabled>true</enabled>
                  <updatePolicy>daily</updatePolicy>
                  <checksumPolicy>ignore</checksumPolicy>
              </release>
              <snapshots>
                  <enabled>false</enabled>
                  <updatePolicy>daily</updatePolicy>
                  <checksumPolicy>ignore</checksumPolicy>
              </snapshots>
              <layout>default</layout>
          </repository>
      </repositories>
      ...
</project> 

Maven默认的仓库id为central,如果其他配置了id为central的仓库,那么就会覆盖Maven默认的配置

release和snapshot控制Maven可以是否下载正式版或者快照版本的构件

release和snapshot中还有updatePolicy和checksumPolicy两个属性

  • updatePolicy:maven检查仓库的更新的频率,默认是daily、其他的选项包括never、always(每次构建都检查)、interval:X (每X分钟检查一次)

  • checksumPolicy:当maven把构件部署到仓库时,会同时部署校验和文件,当checksumPolicy的值为warn时,Maven在每次构建时会输出警告信息,当为fail时校验和检查失败构建就会失败,ignore那么Maven不会检查校验和

layout为default时表示布局为Maven2/3的,不是1的布局

1.2.4、远程仓库的认证

有的仓库为了安全考虑是需要用户名和密码认证才能访问的,这就需要配置settings.xml

在servers节点下可以配置server属性,如下

<settings>
  ...
    <servers>
        <server>
            <id>my-repo</id>
            <username>username</username>
            <password>password</password>
        </server>
    </servers>
   ...
</settings>

这里的id是repository节点中需要认证的id,这两个id把这两个配置关联起来

1.2.5、部署至远程仓库

Maven不仅能编译、测试、打包项目,还能将项目打包发布到仓库中,需要编辑pom.xml文件,配置distributionManagement元素节点

<project>
    ...
      <distribution>
       <repostiory>
           <id>project-release</id>
              <name>project release repository</name>
              <url>...</url>
          </repostiory>
          <snapshotRepostiory>
           <id>project-snapshot</id>
              <name>project snapshot repository</name>
              <url>...</url>
          </snapshotRepostiory>
      </distribution>
      ...
  </project>

distributionManagement节点包含两个子元素:repostiory和snapshotRepostiory,分别表示发行版和快照版本的发布配置,id为仓库的唯一标识,name是为了方便人阅读,url是目标仓库的地址

当仓库需要配置认证的时候,id需要和settings.xml中的server节点下的id对应,如5.2.4节所述

mvn clean deploy

发行版会发到release仓库,而快照版本则会部署到snapshot仓库

1.3、快照版本

版本号后加上-SNAPSHOT表示快照版本,当maven将构件发布到仓库时会给构件打上时间戳,例如1.0-20180908.223910-1表示2018年9月8日22时39分10秒第一次构建,有了时间戳,maven就能获取到最新的版本,当Maven进行构建的时候,会去检查最新的版本,默认是每天检查一次,由

仓库配置中的updatePolicy控制,见5.2.3节,如果想忽略该配置,使用如下命令会在每次构建时都检查更新

mvn clean install -U

1.4、仓库镜像

如果仓库X能提供Y的所有构件,那么X就是Y的一个镜像

可以在settings.xml中配置镜像

<settings>
  ...
    <mirros>
        <id>aliyun</id>
        <name>aliyun maven repo</name>
        <url>{{url}}</url>
        <mirrorOf>central</mirrorOf>
    </mirros> 
  ...    
</settings>

miirorOf配置的是该镜像是哪个仓库的镜像,上面配置的是中央仓库的镜像,所有通过中央仓库的请求都会转到这个镜像中

<mirrorOf>*</mirrorOf>

代表它是所有仓库的镜像

<mirrorOf>external:*</mirrorOf>

匹配除了本地的所有远程仓库

<mirrorOf>repo1,repo2</mirrorOf>

匹配repo1和repo2,用逗号分开

<mirrorOf>*,!repo1</mirrorOf>

匹配除了repo1的所有仓库

1.5、仓库搜索服务

  • sonatype nexus

  • jarvana

  • mvn browser

  • mvn repository

相关文章

  • 5、Maven仓库

    1.1、仓库路径 路径的构建规则与步骤为: 1、groupId的.替换成/ 2、后面加上artifactId,同样...

  • Maven 仓库管理

    本节主要介绍如何配置 Maven 仓库,发布 jar 包到 Maven 仓库 Maven 仓库是什么? Maven...

  • maven学习笔记

    1.maven环境配置2.配置maven3.maven私服 nexus3 配置4.maven使用nexus仓库5....

  • Maven实战之Maven仓库

    Maven实战之Maven仓库 Maven仓库作用 仓库,顾名思义就是存放物品的地方。在Maven中,我们可以将其...

  • 拉勾后台管理系统后端开发

    后端开发 Maven settings.xml配置文件 仓库 本地仓库 远程仓库 中央仓库 maven中央仓库 ...

  • 第5章 总结

    5.1 maven 仓库 1、maven 仓库的类型有哪些? 2、maven 工程查找仓库的流程是什么? 3、本地...

  • 【maven】仓库的优先级顺序

    在maven中,仓库可以分为:本地仓库、远程仓库。远程仓库可以分为:中央仓库、私服仓库。中央仓库是maven官方指...

  • Maven仓库

    一.Maven 仓库 Maven 包集中存放的地方,就是 Maven 仓库。这些仓库,可以是放在本地,也可以放在某...

  • 5. maven仓库

    直接去看别人的吧。地址在这里。

  • Maven之仓库简介

    Maven的仓库分两大类:1.本地仓库 2.远程仓库 1.本地仓库 maven的本地仓库,在安装maven后并不会...

网友评论

      本文标题:5、Maven仓库

      本文链接:https://www.haomeiwen.com/subject/vqikdqtx.html