maven的仓库分为两类:本地仓库和远程仓库,当maven在按照坐标查找构建或插件时,会先在本地仓库查找,能找到就会直接使用本地仓库的构建或插件;当没找到对应的构建或插件或者须要查看更新时,才会去远程仓库查找,找到后会下载到本地,没找到会报错。java
maven的本地仓库位置默认在用户目录下的.m2/repository,能够经过配置settings.xml中的apache
<settings> ... <localRepository></localRepository> ... </settings>
配置本地仓库到其余位置,须要注意的是,要使settings.xml中的配置生效,在IDE中必须指定settings.xml位置;若在命令行中使用,默认会使用maven_home目录下config中的settings.xml,能够使用-s指定要使用的settings.xml文件的位置。app
maven的远程仓库又分为公开的仓库(如默认的中央仓库、java.net Maven库、JBoss Maven库等)和私服(通常为公司局域网中使用,节约流量,便于管理,加速构建,常见的能够使用nexus这个开源项目来快速搭建)maven
maven的远程仓库配置能够在pom.xml中或settings.xml中完成,pom.xml文件用来设置当前项目的配置项,若是有配置其余模块或其余项目会复用,能够在settings.xml中配置或者使用继承来实现配置的复用;settings.xml适合用来配置一些全部maven项目都会公用的配置信息,好比:maven构建以及插件的下载地址、maven的镜像、maven代理等布局
<repositories> <repository> <id>maven.oschia.net</id> <name>oschina maven repository</name> <url>http://maven.oschina.net/content/groups/public/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </snapshots> <layout>default</layout> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven.oschina.net</id> <name>oschina maven repository</name> <url>http://maven.oschina.net/content/groups/public/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </pluginRepository> </pluginRepositories>
repositories元素下能够配置多个repository,每一个repository表示一个远程仓库,repository下面的元素以下ui
id,每一个repository须要一个惟一的id,若是id相同后面的配置会覆盖前面的配置,如maven的超级pom.xml(解压${M2_HOME}/lib/maven-model-builder-3.0.4.jar,在解压出来的目录的/org/apache/maven/model/pom-4.0.0.xml)中配置了maven的中央仓库,id为central,咱们能够经过配置相同id覆盖中央仓库配置;url
name,用于描述这个仓库spa
releases,enabled:true或false;updatePolicy:更新频率never-从不,always-每次构建都检查,daily-天天(默认),inerval:x-每隔x分钟;checksumPolicy:用来配置文件校验和策略,当勾践被部署到远程仓库会同时生成一个校验和文件,在下载构件时检查校验和,warn-校验失败输出警告(默认),fail-校验失败构建失败,ignore-忽略.net
snapshots 同上插件
layout,布局默认为default
pluginRepositories状况与上面基本一致。
私服能够用于部署第三方构件,须要在pom.xml文件中以下配置:
<distributionManagement> <repository> <id>project-release</id> <name>release repository</name> <url></url> </repository> <snapshotRepository> <id>project-snapshot</id> <name>snapshot repository</name> <url></url> </snapshotRepository> </distributionManagement>
repository用来配置release版本的部署仓库,snapshotRepository用于配置snapshot版本的部署配置
在从仓库下载构建或者部署构件到仓库时,能够开启帐号密码认证,只有拥有正确的帐号密码的才能够使用,这是须要在settings.xml文件中配置认证信息,以下:
<settings> ...... <servers> <server> <id>mapping repository id</id> <username></username> <password></password> </server> </servers> ...... </settings>