第六章 仓库
    6.3  仓库的分类

    6.3.1  本地仓库
    用户目录/.m2/repository是本地仓库目录。、
    编辑~/.m2/settings.xml,设置本地仓库地址。

<settings>
         <localRepository>d:\java\repository\</localRepository>
     <settings>


    默认情况下,~/.m2/settings.xml文件是不存在的,用户需要从$M2_HOME/conf/settings.xml复制。

    6.3.2  远程仓库
    本地仓库就好比书房,我需要读书的时候先从书房找,相应地,Maven需要构件的时候先从本地仓库找。远程仓库就好比书店(包括实体书店、网上书店等),当我无法从自己的书房找到需要的书的时候,就会从书店购买后放到书房里。当Maven无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库。一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似地,对于Maven来说,每个用户只有一个本地仓库,但可以配置访问很多远程仓库。

    6.3.3  中央仓库
    中央仓库是一个默认的远程仓库,Maven的安装文件自带了中央仓库的配置。打开$M2_HOME/lib/maven-model-builder-3.0.jar,然后访问路径

org/apache/maven/model/pom-4.0.0.xml,可以看到如下的配置:
     <repositories>
         <repository>
             <id>central</id>
             <name>Maven Repository Switchboard</name>
             <url>http://repo1.maven.org/maven2</url>
             <layout>default</layout>
             <snapshots>
                 <enabled>false</enabled>
             </snapshots>
         </repository>
     </repositories>



    6.3.4  私服
    私服的作用:

  •     节省自己的外网带宽。
  •     加速Maven构建。
  •     部署第三方构件。
  •     提高稳定性,增强控制。
  •     降低中央仓库的负荷。

    6.4  远程仓库的配置
    配置POM使用JBoss Maven仓库
   

<project>
         …
         <repositories>
             <repository>
                 <id>jboss</id>
                 <name>JBoss Repository</name>
                 <url>http://repository.jboss.com/maven2/</url>
                 <releases>
                     <enabled>true</enabled>
                 </releases>
                 <snapshots>
                     <enabled>false</enabled>
                 <snapshots>
             </repository>
         <repositories>
     </project>
     
     对于releases和snapshots来说,除了enabled,它们还包含另外两个子元素updatePolicy和checksumPolicy:
     <snapshots>
         <enabled>true</enabled>
         <updatePolicy>daily</updatePolicy>
         <checksumPolicy>ignore</checksumPolicy>
     <snapshots>


    元素updatePolicy用来配置Maven从远程仓库检查更新的频率,默认的值是daily,表示Maven每天检查一次。其他可用的值包括:never—从不检查更新;always—每次构建都检查更新;interval:X—每隔X分钟检查一次更新(X为任意整数)。
    元素checksumPolicy用来配置Maven检查检验和文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件的时候,Maven会验证校验和文件,如果校验和验证失败,怎么办:当checksumPolicy的值为默认的warn时,Maven会在执行构件时输出警告信息,其他可用的值包括:fail—Maven遇到校验和错误就让构建失败;ignore—使Maven完全忽略校验和错误。

    6.7  镜像
    如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都能够从它的镜像中获取。举个例子,http://maven.net.cn/content/groups/public/是中央仓库http://repo1.maven.org/maven2/在中国的镜像,由于地理位置的因素,该镜像往往能够提供比中央仓库更快的服务。因此,可以配置Maven使用该镜像来替代中央仓库。编辑settings.xml:
 

<settings>
         …
         <mirrors>
             <mirror>
                 <id>maven.net.cn</id>
                 <name>one of the central mirrors in China</name>
                 <url>http://maven.net.cn/content/groups/public/</url>
                 <mirrorOf>central<mirrorOf>            
            <mirror>
         <mirrors>
         …
     <settings>

     配置私服作为镜像:
     <settings>
         …
         <mirrors>
             <mirror>
                 <id>internal-repository</id>
                 <name>Internal Repository Manager </name>
                 <url>http://192.168.1.100/maven2/</url>
                 <mirrorOf>central<mirrorOf>            
             <mirror>
         <mirrors>
         …
     <settings>



    6.8  仓库搜索服务
    6.8.1  Sonatype Nexus
    地址:http://repository.sonatype.org/

    6.8.2  Jarvana
    地址:http://www.jarvana.com/jarvana/

    6.8.3  MVNbrowser
    地址:http://www.mvnbrowser.com

    6.8.4  MVNRepository
    地址:http://mvnRepository.com/

 


转载于:https://blog.51cto.com/jawsy/544645