Maven實戰讀書筆記(二):Maven座標與倉庫

2.1 Maven座標

Maven座標是Maven用來表示一個組件依賴的標示。
Maven經過下面幾個元素定義座標:groupId、artifactId、version、packaging、classifier.java

groupId:定義當前Maven項目隸屬的實際項目。不該該是組織或公司(一個公司有不少項目,每一個項目有不少模塊)。apache

artifactId:定義實際項目的一個Maven模塊,推薦使用實際項目名稱做爲前綴。服務器

version:定義Maven項目當前所處的版本。網絡

packaging:定義Maven項目的打包方式,可選的有:jar(默認)、warpom,不一樣的打包方式會影響構建的生命週期。maven

classifier:定義構建輸出的一些附屬構建,如javadocsources佈局

2.2 Maven倉庫

Maven座標是一個構件的邏輯表示,構件的物理表示是文件,Maven經過倉庫來統一管理這些文件。ui

得益於座標機制,Maven項目可以以統一的方式來使用任何構件,在此基礎上,Maven能夠在某個位置統一存儲全部Maven項目共享的構建,這個統一位置就是倉庫。阿里雲

2.2.1 倉庫的分類

Maven中的倉庫分爲:本地倉庫和遠程倉庫。url

Maven根據座標尋找構件時,先查看本地倉庫是否存在該構件,存在則直接使用;不然就查找遠程倉庫,找到以後就下載到本地倉庫;本地和遠程都沒找到,直接報錯。代理

倉庫的分類

中央倉庫是Maven核心自帶的遠程倉庫,含絕大多數開源的構件;

私服是在局域網搭建的倉庫服務器,用於代理外部的遠程倉庫,能夠節省帶寬和時間,內部的項目還能部署到私服供其餘項目使用;使用私服能夠加速Maven構建以及提升穩定性,內網訪問不須要依賴於網絡。

其餘公共服,如阿里雲等。

本地倉庫:配置路徑${M2_HOME}/conf/settings.xml,默認是${user.home}/.m2/repository.

構件進入本地倉庫有兩種方式:Maven從遠程倉庫下載到本地倉庫;經過在項目執行mvn install安裝到本地。

Maven而言,用戶的本地倉庫只有一個,但能夠配置訪問不少遠程倉庫。而中央倉庫是默認的遠程倉庫,在$M2_HOME/lib/maven-model-builder-{version}.jarorg/apache/maven/model/pom-4.0.0.xml文件定義了,該POM也被稱爲超級POM

2.2.2 倉庫的佈局

構件在Maven倉庫裏的存儲路徑爲:{groupId}/{artifactId}/{version}/{artifactId-version.packaging}

2.2.3 遠程倉庫的配置

經過POM文件的<repositories><repository>元素能夠配置遠程倉庫,如:

<repositories>

   <repository>

     <id>jboss</id>

     <name>jboss repository</name>

     <url>http://repository.jboss.com/maven2/</url>

     <releases>

       <enabled>true</enabled>

     </releases>

     <snapshots>

       <enabled>false</enabled>

     </snapshots>

     <layout>default</layout>

   </repository>

 </repositories>

:必須是惟一的,默認的中央倉庫id是central,若是使用了該id,會覆蓋中央倉庫配置。

:執行倉庫的地址

:開發發佈版本支持

:關閉快照版本支持

:值爲default表示倉庫的佈局是Maven 2及Maven 3,而不是Maven 1.

相比於發佈版本,快照版本還有下面兩個屬性:

<snapshots>

 <enabled>true</enabled>

 <updatePolicy>daily</updatePolicy>

 <checksumPolicy>ignore</checksumPolicy>

</snapshots>

:更新策略,默認 daily,可選擇有 neveralwaysinterval:X (X分鐘檢查一次)。

Maven檢查校驗和的策略,默認值是 warn(校驗不經過時警告),可選擇還有 fail(校驗不經過時構建失敗)、 ignore(忽略校驗錯誤)

2.3 鏡像

若是倉庫X能夠提供倉庫Y存儲的全部內容,則認爲X是Y的一個鏡像。關於鏡像的配置能夠在${M2_HOME}/conf/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>

:匹配遠程倉庫的規則,匹配成功,則使用該鏡像進行代理

Remark:因爲鏡像倉庫徹底屏蔽了被鏡像倉庫,當鏡像倉庫不穩定或者中止服務時,Maven仍將沒法訪問被鏡像倉庫,於是將沒法下載構件。

相關文章
相關標籤/搜索