Maven項目在運行的時候,會首先找本地倉庫是否有須要的jar,若是沒有則去調用遠程倉庫。服務器
解讀Maven在倉庫中的存儲路徑:網絡
1.基於groupId準備路徑,將句點分隔符轉成路徑分隔符,就是將 "." 轉換成 "/" ; example: org.testng --->org/testng maven
2.基於artifactId準備路徑,將artifactId鏈接到後面:org/testng/testng 佈局
3.使用version準備路徑,將version鏈接到後面:org/testng/testng/5.8 網站
4.將artifactId於version以分隔符連字號鏈接到後面:org/testng/testng/5.8/tesng-5.8 url
5.判斷若是構件有classifier,就要在 第4項 後增長 分隔符連字號 再加上 classifier,org/testng/testng/5.8/tesng-5.8-jdk5 spa
6.檢查構件的extension,若是extension存在,則加上句點分隔符和extension,而extension是由packing決定的,org/testng/testng/5.8/tesng-5.8-jdk5.jarcode
maven 倉庫 示意圖orm
配置遠程倉庫(能夠在項目的pom.xml中配置 也能夠在setting.xml中配置)server
當有些構件在中央倉庫不存在,必須從其餘倉庫獲取的時候,咱們須要在maven項目的pom.xml中 配置一個能夠獲取到該構件的遠程倉庫。
配置過程以下:
<!--在pom中配置遠程倉庫的地址--> <repositories> <repository> <!--倉庫id ,必須惟一,不然覆蓋原有的倉庫--> <id>jboss</id> <!--倉庫名--> <name>JBoss repository</name> <!--遠程倉庫地址--> <url>http://repository.jboss.com/maven2/</url> <releases> <!--表示容許下載使用發佈版本--> <enabled>true</enabled> <!--設置從遠程更新的頻率,默認是daily --> <!--三種取值 alway 老是更新 never從不更新 interval:X X表示每隔X分鐘 --> <updatePolicy>daily</updatePolicy> <!--用來配置maven檢查校驗和文件的策略--> <!--當構建部署到本地倉庫的時候 會同時部署對應的校驗和文件--> <!--有三種取值 ignore 忽略校驗 fail 校驗失敗 中止構建 warm 輸出警告信息--> <checksumPolicy>ignore</checksumPolicy> </releases> <!--使用默認的佈局--> <layout>default</layout> <!--是否容許使用快照版本--> <snapshots> <enabled>false</enabled> <!--設置從遠程更新的頻率,默認是daily --> <!--三種取值 alway 老是更新 never從不更新 interval:X X表示每隔X分鐘 --> <updatePolicy>daily</updatePolicy> <!--用來配置maven檢查校驗和文件的策略--> <!--當構建部署到本地倉庫的時候 會同時部署對應的校驗和文件--> <!--有三種取值 ignore 忽略校驗 fail 校驗失敗 中止構建 warm 輸出警告信息--> <checksumPolicy>ignore</checksumPolicy> </snapshots> </repository> </repositories>
遠程倉庫的認證 (在setting.xml中配置)
遠程倉庫的認證不能像遠程倉庫的配置同樣在pom.xml中進行,須要在setting.xml中配置,由於該項目極可能是你們公用的一個maven項目,而本地倉庫是放在本地屬於我的。
遠程倉庫的配置以下:
<servers> <server> <!--id名字必需要與pom中配置的遠程倉庫id同樣,這樣才能夠對立起來--> <id>jboss</id> <!--用戶名--> <username>admin</username> <!--密碼--> <password>1234@qwer</password> </server> <servers>
部署項目到遠程倉庫
咱們能夠把本身的項目經過maven部署到遠程倉庫,供本身的同事使用
部署到遠程服務器 須要在pom中進行以下配置:
<!--部署到遠程倉庫--> <distributionManagement> <!--發佈版本構建的倉庫--> <repository> <!--遠程倉庫的id--> <id>taocodeReleases</id> <!--構件的名字--> <name>account-email</name> <!--要部署的遠程倉庫地址--> <url>http://mvnrepo.code.taobao.org/nexus/content/repositories/releases</url> </repository> <!--快照版本構建的倉庫--> <snapshotRepository> <!--遠程倉庫的id--> <id>taocodeSnapshots</id> <!--構件的名字--> <name>account-email</name> <!--要部署的遠程倉庫地址--> <url>http://mvnrepo.code.taobao.org/nexus/content/repositories/snapshots</url> </snapshotRepository> </distributionManagement>
使用命令:mvn clean deploy
鏡像
加入B倉庫包含了A倉庫的全部服務,那麼B就是A 的鏡像。
當咱們訪問處在別的國家的中央倉庫的時候沒有與網絡的限制,下載速度會很慢,因此咱們可使用在國內的中央倉庫的鏡像 。
鏡像配置以下:
<mirrors> <mirror> <!--倉庫id,若是須要驗證 在setting中配置該id的用戶名 密碼--> <id>alimaven</id> <name>aliyun maven</name> <!--中央倉庫的鏡像-國內中央倉庫的地址--> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!--中央倉庫的id--> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
爲了使用更簡單 複雜的須要,<mirrorOf>能夠進行以下配置
倉庫搜索服務
學會如何使用maven,引入jar 包 是經過使用jar的座標決定,如何查找jar的座標,有如下幾個網站可使用
一、https://repository.sonatype.org/ Sonaty Nexus
二、http://mvnrepository.com/ 中央倉庫