Maven实战学习笔记(仓库)

来源:互联网 发布:淘宝定位跳转代码 编辑:程序博客网 时间:2024/03/28 23:05

一、仓库分类

仓库分为本地仓库和远程仓库。当Maven查找构件时,会先从本地仓库查找,不存在就去远程仓库查找,发现需要的构件将其下载到本地仓库。如果本地仓库和远程仓库都木有,则报错。

1、本地仓库默认在C盘计算机名的文件夹.m2中(.开头的文件夹无法直接取名创建,可在命令行命令创建)。用户可自定义本地仓库目录,推荐做法为先复制一份maven安装目录conf文件夹中的setting.xml到.m2目录下,然后设置localRepository为目标目录,如:

<localRepository>F:/maven/repository</localRepository>

2、maven会有默认的远程仓库(中央仓库),配置在所有pom都继承的超级pom中,此pom位于 $M2_HOME/lib/maven-model-builder-3.0.jar org/apache/maven/model/pom-4.0.0.xml中,打开pom可以看到:

<repositories>    <repository>      <id>central</id>      <name>Central Repository</name>      <url>http://repo.maven.apache.org/maven2</url>      <layout>default</layout>      <snapshots>        <enabled>false</enabled>      </snapshots>    </repository>  </repositories>
id进行唯一标识,snapshots标签的值false表示不下载快照版本的构件。

3、私服,其作为特殊的远程仓库,架设在局域网内的仓库服务(Nexus)。


二、远程仓库的配置

1、远程仓库pom中配置如下:

<repositories><repostory><id>CN</id> <name>OSChinaCentral</name><url>http://maven.oschina.net/content/groups/public/</url><snapshots><enabled>false</enabled></snapshots><releases><enabled>true</enabled><updatePolicy>never</updatePolicy><checksumpolicy>ignore</checksumpolicy></releases></repostory></repositories>
snapshot和releases分别对应快照版本和已发布版本,enabled标识值标明是否下载该版本。其中updatePolicy、checksumpolicy等都是可选值:updatePolicy表示配置从远程仓库检查更新的频率,默认值为daily,表示每天检查一次,可用值包括:never--从不检查更新,always--每次构建都检查更新,interval:X--每隔x分钟检查一次更新(x为任意整数);checksumpolicy表示用来配置maven检查校验和文件的策略,当构件被部署到仓库中时,会同时部署对应的校验和文件,在下载构件时,maven会验证校验和文件,如果校验和验证失败,如果此时checksumpolicy值为默认的warn时,maven则会在执行构建时输出警告信息,其可用值包括:fail--maven遇到校验和错误就让构建失败,ignore--使maven完全忽略校验和错误。

2、部署至远程仓库

构件部署至仓库中,可用来供其他团队成员使用。Maven除了能对项目进行编译、测试、打包之外,还能将项目生成的构件部署(deploy)到仓库中,在pom.xml中,配置distributionManagement元素。如:

<distributionManagement>  <repository>  <id>pro-releases</id><name>Release Repository</name>                                  <url>http://192.168.1.100/content/repositories/proj-releases</url></repository><snapshotRepository><id>pro-snapshot</id><name>Snapshot Repository</name>                                  <url>http://192.168.1.100/content/repositories/proj-snapshot</url></snapshotRepository></distributionManagement>

三、镜像

仓库镜像在setting.xml中配置,如果仓库A可以提供仓库B所有的内容,那么仓库A就是仓库B的镜像。

<mirrors><mirror>  <id>CN</id>  <name>OSChina Central</name>  <url>http://maven.oschina.net/content/groups/public/</url>  <mirrorOf>central</mirrorOf></mirror>

如上配置了一个中央仓库的镜像,mirrorOf中值为central,此值为超级pom中默认中央仓库的id,此时任何对于中央仓库的请求都会转到id为CN的仓库中。



0 0
原创粉丝点击