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>