maven倉庫
在 Maven 的術(shù)語中焰手,倉庫是一個(gè)位置(place)。
Maven 倉庫是項(xiàng)目中依賴的第三方庫怀喉,這個(gè)庫所在的位置叫做倉庫书妻。
在 Maven 中,任何一個(gè)依賴躬拢、插件或者項(xiàng)目構(gòu)建的輸出躲履,都可以稱之為構(gòu)件见间。
Maven 倉庫能幫助我們管理構(gòu)件(主要是JAR),它就是放置所有JAR文件(WAR工猜,ZIP米诉,POM等等)的地方。
Maven 倉庫有三種類型:
- 本地(local)
- 中央(central)
- 遠(yuǎn)程(remote)
本地倉庫
Maven 的本地倉庫篷帅,在安裝 Maven 后并不會(huì)創(chuàng)建史侣,它是在第一次執(zhí)行 maven 命令的時(shí)候才被創(chuàng)建。
運(yùn)行 Maven 的時(shí)候犹褒,Maven 所需要的任何構(gòu)件都是直接從本地倉庫獲取的抵窒。如果本地倉庫沒有,它會(huì)首先嘗試從遠(yuǎn)程倉庫下載構(gòu)件至本地倉庫叠骑,然后再使用本地倉庫的構(gòu)件李皇。
默認(rèn)情況下,不管Linux還是 Windows宙枷,每個(gè)用戶在自己的用戶目錄下都有一個(gè)路徑名為 .m2/respository/ 的倉庫目錄掉房。
Maven 本地倉庫默認(rèn)被創(chuàng)建在 %USER_HOME% 目錄下。要修改默認(rèn)位置慰丛,在 %M2_HOME%\conf 目錄中的 Maven 的 settings.xml 文件中定義另一個(gè)路徑卓囚。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:/MyLocalRepository</localRepository>
</settings>
中央倉庫
Maven 中央倉庫是由 Maven 社區(qū)提供的倉庫,其中包含了大量常用的庫诅病。
中央倉庫包含了絕大多數(shù)流行的開源Java構(gòu)件哪亿,以及源碼、作者信息贤笆、SCM蝇棉、信息、許可證信息等芥永。一般來說篡殷,簡單的Java項(xiàng)目依賴的構(gòu)件都可以在這里下載到。
中央倉庫的關(guān)鍵概念:
- 這個(gè)倉庫由 Maven 社區(qū)管理埋涧。
- 不需要配置板辽。
- 需要通過網(wǎng)絡(luò)才能訪問。
要瀏覽中央倉庫的內(nèi)容棘催,maven 社區(qū)提供了一個(gè) URL:http://search.maven.org/#browse劲弦。 使用這個(gè)倉庫,開發(fā)人員可以搜索所有可以獲取的代碼庫醇坝。
遠(yuǎn)程倉庫
遠(yuǎn)程倉庫分為:遠(yuǎn)程公共倉庫瓶您、私服
如果 Maven 在中央倉庫中也找不到依賴的文件,它會(huì)停止構(gòu)建過程并輸出錯(cuò)誤信息到控制臺(tái)。為避免這種情況呀袱,Maven 提供了遠(yuǎn)程倉庫的概念贸毕,它是開發(fā)人員自己定制倉庫,包含了所需要的代碼庫或者其他工程中用到的 jar 文件夜赵。
舉例說明明棍,使用下面的 pom.xml,Maven 將從遠(yuǎn)程倉庫中下載該 pom.xml 中聲明的所依賴的(在中央倉庫中獲取不到的)文件寇僧。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>com.companyname.common-lib</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.0</version>
</dependency>
<dependencies>
<repositories>
<repository>
<id>companyname.lib1</id>
<url>http://download.companyname.org/maven2/lib1</url>
</repository>
<repository>
<id>companyname.lib2</id>
<url>http://download.companyname.org/maven2/lib2</url>
</repository>
</repositories>
</project>
Maven 依賴搜索順序
當(dāng)我們執(zhí)行 Maven 構(gòu)建命令時(shí)摊腋,Maven 開始按照以下順序查找依賴的庫:
- 步驟 1 - 在本地倉庫中搜索,如果找不到嘁傀,執(zhí)行步驟 2兴蒸,如果找到了則執(zhí)行其他操作。
- 步驟 2 - 在中央倉庫中搜索细办,如果找不到橙凳,并且有一個(gè)或多個(gè)遠(yuǎn)程倉庫已經(jīng)設(shè)置,則執(zhí)行步驟 4笑撞,如果找到了則下載到本地倉庫中以備將來引用岛啸。
- 步驟 3 - 如果遠(yuǎn)程倉庫沒有被設(shè)置,Maven 將簡單的停滯處理并拋出錯(cuò)誤(無法找到依賴的文件)茴肥。
- 步驟 4 - 在一個(gè)或多個(gè)遠(yuǎn)程倉庫中搜索依賴的文件坚踩,如果找到則下載到本地倉庫以備將來引用,否則 Maven 將停止處理并拋出錯(cuò)誤(無法找到依賴的文件)瓤狐。
Maven 阿里云(Aliyun)倉庫
Maven 倉庫默認(rèn)在國外瞬铸, 國內(nèi)使用難免很慢,我們可以更換為阿里云的倉庫础锐。
第一步:修改 maven 根目錄下的 conf 文件夾中的 setting.xml 文件赴捞,在 mirrors 節(jié)點(diǎn)上,添加內(nèi)容如下:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
第二步: pom.xml文件里添加:
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
maven私服
私服是一種特殊的遠(yuǎn)程倉庫郁稍。
有三種專門的Maven倉庫管理軟件可以用來幫助我們建立私服:chiva、Artifactory和Nexus胜宇。Nexus是當(dāng)前最流行的Maven倉庫管理軟件耀怜。
現(xiàn)在的項(xiàng)目基本都是用Maven來管理工程,這樣一來在公司內(nèi)容搭建一個(gè)私服就非常有必要了桐愉,這樣一來可以管理公司內(nèi)部用的JAR包财破,
也可以管理第三方的各種JAR來,以免每次都要從外網(wǎng)的倉庫中下載从诲。
nexus官網(wǎng)地址
https://www.sonatype.com/nexus-repository-oss
Nexus介紹
- Nexus是一個(gè)強(qiáng)大的Maven倉庫管理器左痢,它極大地簡化了自己內(nèi)部倉庫的維護(hù)和外部倉庫的訪問。利用Nexus你可以只在一個(gè)地方就能夠完全控制訪問 和部署在你所維護(hù)倉庫中的每個(gè)Artifact。
- Nexus是一套“開箱即用”的系統(tǒng)不需要數(shù)據(jù)庫俊性,它使用文件系統(tǒng)加Lucene來組織數(shù)據(jù)略步。Nexus 使用ExtJS來開發(fā)界面,利用Restlet來提供完整的REST APIs定页,通過m2eclipse與Eclipse集成使用趟薄。
- Nexus支持WebDAV與LDAP安全身份認(rèn)證。
Nexus的下載地址是:http://www.sonatype.org/nexus/go/ 到官網(wǎng)上將ZIP的壓縮包下載下來即可典徊,解壓之后發(fā)現(xiàn)有兩個(gè)文件夾杭煎,一個(gè)是nexus-2.11.0-02,另一個(gè)是sonatype-work卒落;
第一個(gè)文件夾包含了Nexus運(yùn)行所需要的文件羡铲,是運(yùn)行Nexus必須的;第二個(gè)文件夾目錄包含Nexus生成的配置文件儡毕、日志文件也切、倉庫文件等,當(dāng)需要備份Nexus的時(shí)候妥曲,默認(rèn)備份的是此目錄文件贾费。
nexus的安裝和使用可以參考:
https://blog.csdn.net/qq_33188563/article/details/82154118
maven中央倉庫和私服倉庫地址整理
1、http://www.sonatype.org/nexus/ 私服nexus工具使用
2檐盟、http://mvnrepository.com/ (推薦)
3褂萧、http://repo1.maven.org/maven2
4、http://maven.aliyun.com/nexus/content/groups/public/ 阿里云 (強(qiáng)力推薦)
5葵萎、http://repo2.maven.org/maven2/ 私服nexus工具使用
6导犹、http://uk.maven.org/maven2/
7、http://repository.jboss.org/nexus/content/groups/public
8羡忘、http://maven.oschina.net/content/groups/public/ oschina可惜啦谎痢,以前一直用這個(gè),不過現(xiàn)在有阿里云來擦屁股啦
9卷雕、http://mirrors.ibiblio.org/maven2/
10节猿、http://maven.antelink.com/content/repositories/central/
11、http://nexus.openkoala.org/nexus/content/groups/Koala-release/
12漫雕、http://maven.tmatesoft.com/content/groups/public/
其實(shí)不管是配置哪個(gè)地址滨嘱,個(gè)人覺得還是創(chuàng)建一個(gè)私人nexus倉庫比較好~ 這樣團(tuán)隊(duì)能夠分享,也不用過多的下載版本