第六章 仓库
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