maven倉庫分爲本地倉庫和遠程倉庫,當maven根據座標尋找構件時,首先會從本地倉庫中查找,若是本地倉庫中沒有,則會去遠程倉庫中查找,而後下載到本地倉庫中再使用。本地倉庫的倉庫目錄默認爲用戶目錄/.m2/repository,能夠修改**.m2/setting.xml**文件(默認不存在,須要從maven安裝目錄下copy一份)的localRepository元素。安全
<settings> <localRepository>D:\maven\repository\</localRepository> </settings>
不少狀況下,默認的中央倉庫沒法知足項目的需求,可能須要的構件存在於另外一個遠程倉庫,如JBoss Maven倉庫,能夠在POM中配置該倉庫。服務器
<repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.org/maven2</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
releases和snapshots中的enabled表示開啓JBoss倉庫的的發佈版本下載,關閉快照版本的下載。maven
若是一個內部的maven服務器須要認證,能夠在settings.xml中配置用戶名和密碼url
<servers> <server> <id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> </server> </servers>
repository信息能夠直接在pom.xml中配置,但認證信息必須在settings.xml中配置。這樣更爲安全。代理
私服是一種特殊的遠程倉庫,爲了節省帶寬和時間,能夠在局域網內架設一個私有的倉庫服務器,用其代理全部外部的遠程倉庫,而內部項目也能夠部署到私服上供其餘項目使用。code
建立私服有許多好處server
公司的內部項目不能公開發布,但須要被其餘項目依賴,能夠部署到私服上。 在pom.xml中配置發佈地址。xml
<distributionManagement> <repository> <id>thirdparty</id> <name>project thirdparty repository</name> <url> http://mvn.company.com/nexus/content/repositories/thirdparty </url> </repository> </distributionManagement>
當執行mvn發佈命令時,maven會將項目構建輸出到配置對應的遠程倉庫開發
mvn clean deploy
若是倉庫X能夠提供倉庫Y存儲的全部內容,那麼就能夠認爲X是Y的一個鏡像。因爲地理位置的因素,鏡像每每可以提供比中央庫存更快的服務。所以能夠在settings.xml中配置鏡像代替中央倉庫。部署
<!-- 配置阿里的鏡像 --> <mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors>
<mirrorOf>配置*,表明對全部倉庫的請求都轉發至此鏡像,若是配置central,則表示對中央倉庫的請求都會轉至該鏡像。<mirrorOf>支持多種配置:
也能夠將私服配置爲鏡像。因爲私服能夠代理任何外部的公共倉庫,所以對於內部的maven用戶來講,使用一個私服地址等於使用了全部須要的外部倉庫。
<mirror> <id>internal repository</id> <name>Internal Repository</name> <url>http://192.168.1.100/nexus/content/groups/public</url> <mirrorOf>*</mirrorOf> </mirror>
在使用maven進行平常開發的時候,一個常見的問題就是如何尋找須要的依賴的座標地址。我經常使用的就是http://mvnrepository.com/,根據關鍵字進行查詢,絕大部分的maven項目都能查詢到。