Maven坐標(biāo)與倉庫

2.1 Maven坐標(biāo)

Maven通過下面幾個元素定義坐標(biāo):groupId、artifactId、version、packaging、classifier.

groupId:定義當(dāng)前Maven項目隸屬的實際項目。不應(yīng)該是組織或公司(一個公司有很多項目,每個項目有很多模塊)。

artifactId:定義實際項目的一個Maven模塊,推薦使用實際項目名稱作為前綴。

version:定義Maven項目當(dāng)前所處的版本。

packaging:定義Maven項目的打包方式,可選的有:jar(默認(rèn))、war、pom,不同的打包方式會影響構(gòu)建的生命周期。

classifier:定義構(gòu)建輸出的一些附屬構(gòu)建,如javadoc、sources。

2.2 Maven倉庫

Maven坐標(biāo)是一個構(gòu)件的邏輯表示,構(gòu)件的物理表示是文件,Maven通過倉庫來統(tǒng)一管理這些文件。

得益于坐標(biāo)機(jī)制,Maven項目能夠以統(tǒng)一的方式來使用任何構(gòu)件,在此基礎(chǔ)上,Maven可以在某個位置統(tǒng)一存儲所有Maven項目共享的構(gòu)建,這個統(tǒng)一位置就是倉庫。

2.2.1 倉庫的分類

Maven中的倉庫分為:本地倉庫和遠(yuǎn)程倉庫。

Maven根據(jù)坐標(biāo)尋找構(gòu)件時,先查看本地倉庫是否存在該構(gòu)件,存在則直接使用;否則就查找遠(yuǎn)程倉庫,找到之后就下載到本地倉庫;本地和遠(yuǎn)程都沒找到,直接報錯。

倉庫的分類

中央倉庫是Maven核心自帶的遠(yuǎn)程倉庫,含絕大多數(shù)開源的構(gòu)件;

私服是在局域網(wǎng)搭建的倉庫服務(wù)器,用于代理外部的遠(yuǎn)程倉庫,可以節(jié)省帶寬和時間,內(nèi)部的項目還能部署到私服供其他項目使用;使用私服可以加速M(fèi)aven構(gòu)建以及提高穩(wěn)定性,內(nèi)網(wǎng)訪問不需要依賴于網(wǎng)絡(luò)。

其他公共服,如阿里云等。

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

構(gòu)件進(jìn)入本地倉庫有兩種方式:Maven從遠(yuǎn)程倉庫下載到本地倉庫;通過在項目執(zhí)行mvn install安裝到本地。

Maven而言,用戶的本地倉庫只有一個,但可以配置訪問很多遠(yuǎn)程倉庫。而中央倉庫是默認(rèn)的遠(yuǎn)程倉庫,在$M2_HOME/lib/maven-model-builder-{version}.jarorg/apache/maven/model/pom-4.0.0.xml文件定義了,該POM也被稱為超級POM。

2.2.2 倉庫的布局

構(gòu)件在Maven倉庫里的存儲路徑為:{groupId}/{artifactId}/{version}/{artifactId-version.packaging}

2.2.3 遠(yuǎn)程倉庫的配置

通過POM文件的<repositories><repository>元素可以配置遠(yuǎn)程倉庫,如:

<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>:必須是唯一的,默認(rèn)的中央倉庫id是central,如果使用了該id,會覆蓋中央倉庫配置。

<url>:執(zhí)行倉庫的地址

<releases> <enabled>:開發(fā)發(fā)布版本支持

<snapshots> <enabled>:關(guān)閉快照版本支持

<layout>:值為default表示倉庫的布局是Maven 2及Maven 3,而不是Maven 1.

相比于發(fā)布版本,快照版本還有下面兩個屬性:

<snapshots>

 <enabled>true</enabled>

 <updatePolicy>daily</updatePolicy>

 <checksumPolicy>ignore</checksumPolicy>

</snapshots>

<updatePolicy>:更新策略,默認(rèn)daily,可選擇有never、always、interval:X (X分鐘檢查一次)。

<checksumPolicy>:Maven檢查校驗和的策略,默認(rèn)值是warn(校驗不通過時警告),可選擇還有fail(校驗不通過時構(gòu)建失敗)、ignore(忽略校驗錯誤)

2.3 鏡像

如果倉庫X可以提供倉庫Y存儲的所有內(nèi)容,則認(rèn)為X是Y的一個鏡像。關(guān)于鏡像的配置可以在${M2_HOME}/conf/settings.xml中進(jìn)行配置:

<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>:匹配遠(yuǎn)程倉庫的規(guī)則,匹配成功,則使用該鏡像進(jìn)行代理

Remark:由于鏡像倉庫完全屏蔽了被鏡像倉庫,當(dāng)鏡像倉庫不穩(wěn)定或者停止服務(wù)時,Maven仍將無法訪問被鏡像倉庫,因而將無法下載構(gòu)件。

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • |-1-更新內(nèi)容[6.從倉庫解析依賴的機(jī)制(重要)] 1Maven倉庫作用 倉庫用來存儲所有項目使用到構(gòu)件,在ma...
    zlcook閱讀 6,447評論 0 25
  • 目前在看nexus私服章節(jié)的知識時需要用到倉庫與鏡像的知識,正好通過簡書把倉庫和鏡像章節(jié)的筆記整理一下 倉庫 ma...
    小煉君閱讀 1,410評論 0 48
  • 1.POM文件 modelVersion:POM 模型的版本 groupId:項目屬于哪...
    mecury閱讀 1,050評論 0 0
  • 最近的生活雞飛狗跳如履薄冰,whatever,一切都會慢慢好起來的,保持微笑保持希望。加油!
    嘟嘟媽咪玲閱讀 188評論 0 0
  • 產(chǎn)品的自我管理,主要分為四大類:情緒管理、時間管理、目標(biāo)管理、知識管理。 (1)情緒管理 這是一種善于掌握自我,善...
    楚木風(fēng)起閱讀 509評論 0 0

友情鏈接更多精彩內(nèi)容