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
私服能够用于部署第三方构件,须要在pom.xml文件中以下配置:url
<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版本的部署配置spa
在从仓库下载构建或者部署构件到仓库时,能够开启帐号密码认证,只有拥有正确的帐号密码的才能够使用,这是须要在settings.xml文件中配置认证信息,以下:.net
settings> ...... <servers> <server> <id>mapping repository id</id> <username></username> <password></password> </server> </servers> ...... </settings>