Maven仓库详解
轉(zhuǎn)載自:Maven入門指南④:倉(cāng)庫(kù)
1 . 倉(cāng)庫(kù)簡(jiǎn)介
沒有 Maven 時(shí),項(xiàng)目用到的 .jar 文件通常需要拷貝到 /lib 目錄,項(xiàng)目多了,拷貝的文件副本就多了,占用磁盤空間,且難于管理。Maven 使用一個(gè)稱之為倉(cāng)庫(kù)的目錄,根據(jù)構(gòu)件的坐標(biāo)統(tǒng)一存儲(chǔ)這些構(gòu)件的唯一副本,在項(xiàng)目中通過依賴聲明,可以方便的引用構(gòu)件。
2 . 倉(cāng)庫(kù)的布局
構(gòu)件都有唯一的坐標(biāo),Maven 根據(jù)坐標(biāo)管理構(gòu)件的存儲(chǔ)。如以下對(duì) spring-orm-3.2.0 的存儲(chǔ):
文件路徑對(duì)應(yīng)了:groupId/artifactId/version/artifactId-version.packaging
3 . 倉(cāng)庫(kù)的分類
Maven 倉(cāng)庫(kù)分為本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù),尋找構(gòu)件時(shí),首先從本地倉(cāng)庫(kù)找,找不到則到遠(yuǎn)程倉(cāng)庫(kù)找,再找不到就報(bào)錯(cuò);在遠(yuǎn)程倉(cāng)庫(kù)中找到了,就下載到本地倉(cāng)庫(kù)再使用。中央倉(cāng)庫(kù)是 Maven 核心自帶的遠(yuǎn)程倉(cāng)庫(kù),默認(rèn)地址:http://repo1.maven.org/maven2。除了中央倉(cāng)庫(kù),還有其它很多公共的遠(yuǎn)程倉(cāng)庫(kù)。私服是架設(shè)在本機(jī)或局域網(wǎng)中的一種特殊的遠(yuǎn)程倉(cāng)庫(kù),通過私服可以方便的管理其它所有的外部遠(yuǎn)程倉(cāng)庫(kù)。
3 . 1 . 本地倉(cāng)庫(kù)
Maven 本地倉(cāng)庫(kù)默認(rèn)地址為:${user.home}/.m2/repository。
通過修改 %MAVEN_HOME%/conf/settings.xml (或者:${user.home}/.m2/settings.xml,針對(duì)當(dāng)前用戶(推薦))配置文件可以更改本地倉(cāng)庫(kù)的位置。
3 . 2 . 中央倉(cāng)庫(kù)
安裝完 Maven ,本地倉(cāng)庫(kù)幾乎是空的,這時(shí)需要從遠(yuǎn)程倉(cāng)庫(kù)下載所需構(gòu)件。Maven 配置了一個(gè)默認(rèn)的遠(yuǎn)程倉(cāng)庫(kù),即中央倉(cāng)庫(kù),找到 %MAVEN_HOME%/lib/maven-model-builder-3.2.1.jar,打開?org/apache/maven/model/pom-4.0.0.xml 超級(jí)POM:
3 . 3 . 在項(xiàng)目中添加其他遠(yuǎn)程倉(cāng)庫(kù)
當(dāng)中央倉(cāng)庫(kù)找不到所需的構(gòu)件時(shí),我們可以配置 pom.xml ,添加其它的遠(yuǎn)程倉(cāng)庫(kù)。
1 <repositories> 2 <repository> 3 <id>Sonatype</id> 4 <name>Sonatype Repository</name> 5 <url>http://repository.sonatype.org/content/groups/public/</url> 6 <layout>default</layout> 7 <releases> 8 <enabled>true</enabled> 9 </releases> 10 <snapshots> 11 <enabled>false</enabled> 12 </snapshots> 13 </repository> 14 </repositories>其中 id 必須唯一,若不唯一,如設(shè)置為 central 將覆蓋中央倉(cāng)庫(kù)的配置。
3 . 4 . 鏡像倉(cāng)庫(kù)
鏡像倉(cāng)庫(kù)可以理解為倉(cāng)庫(kù)的副本,從倉(cāng)庫(kù)中可以找到的構(gòu)件,從鏡像倉(cāng)庫(kù)中也可以找到。比如針對(duì)中央倉(cāng)庫(kù) http://repo1.maven.org/maven2 ,在中國(guó)有它的鏡像倉(cāng)庫(kù),這樣我們直接訪問鏡像倉(cāng)庫(kù),更快更穩(wěn)定。
1 <settings> 2 ... 3 <mirrors> 4 <mirror> 5 <id>maven.net.cn</id> 6 <name>central mirror in china</name> 7 <url>http://maven.net.cn/content/groups/public</url> 8 <mirrorOf>central</mirrorOf> <!--表明為central中央倉(cāng)庫(kù)配置鏡像倉(cāng)庫(kù)--> 9 </mirror> 10 </mirrors> 11 ... 12 </settings>其中,<mirrorOf> 指明了為哪個(gè)倉(cāng)庫(kù)配置鏡像,可以使用通配符如:<mirrorOf>*</mirrorOf>,或者 <mirrorOf>repo1,repo2</mirrorOf> 等進(jìn)行匹配。一旦配置了鏡像,所有針對(duì)原倉(cāng)庫(kù)的訪問將轉(zhuǎn)到鏡像倉(cāng)庫(kù)的訪問,原倉(cāng)庫(kù)將不再能直接訪問,即使鏡像倉(cāng)庫(kù)不穩(wěn)定或停用。在搭建私服的時(shí)候,我們通常為所有倉(cāng)庫(kù)設(shè)置鏡像為私服地址,通過私服對(duì)所有倉(cāng)庫(kù)進(jìn)行統(tǒng)一管理。
3 . 5 . 常用的倉(cāng)庫(kù)搜索地址
- http://search.maven.org/
- https://repository.sonatype.org/
- http://mvnrepository.com/
轉(zhuǎn)載于:https://www.cnblogs.com/ysq0908/p/4737977.html
總結(jié)
- 上一篇: 家用投影仪的芯片尺寸?
- 下一篇: node.js基础:数据存储