文章目錄
私服
總體上來說私服有以下好處:
- 加速maven構件的下載速度
- 節省寬帶,加速項目構建速度
- 方便部署自己的構件以供他人使用
- 提高maven的穩定性,中央倉庫需要本機能夠訪問外網,而如果採用私服的方式,只需要本機可以訪問內網私服就可以了
有3種專門的maven倉庫管理軟件可以用來幫助我們搭建私服
-
Apache基金會的archiva
http://archiva.apache.org/
-
JFrog的Artifactory
https://jfrog.com/artifactory/
-
Sonatype的Nexus
https://my.sonatype.com/
用的最多的是第三種Nexus,本文我們主要以這個來講解
windows中安裝nexus私服
linux中安裝nexus私服
Nexus中倉庫分類
代理倉庫
代理倉庫主要是讓使用者通過代理倉庫來間接訪問外部的第三方遠程倉庫的,如通過代理倉庫訪問maven中央倉庫、阿里的maven倉庫等等。
宿主倉庫
宿主倉庫主要是給我們自己用的,主要有2點作用
- 將私有的一些構件通過nexus中網頁的方式上傳到宿主倉庫中給其他同事使用
- 將自己開發好一些構件發佈到nexus的宿主倉庫中以供其他同事使用
倉庫組
maven用戶可以從代理倉庫和宿主倉庫中下載構件至本地倉庫,爲了方便從多個代理倉庫和宿主倉庫下載構件,maven提供了倉庫組,倉庫組中可以有多個代理倉庫和宿主倉庫,而maven用戶只用訪問一個倉庫組就可以間接的訪問這個組內所有的倉庫,倉庫組中多個倉庫是有順序的,當maven用戶從倉庫組下載構件時,倉庫組會按順序依次在組內的倉庫中查找組件,查找到了立即返回給本地倉庫,所以一般情況我們會將速度快的放在前面。
倉庫組內部實際上是沒有構件內容的,他只是起到一個請求轉發的作用,將maven用戶下載構件的請求轉發給組內的其他倉庫處理。
配置本地Maven從nexus下載構件
在項目的pom.xml
配置方式
<repositories>
<repository>
<id>maven-nexus</id>
<url>http://localhost:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
由於nexus私服需要有用戶名和密碼登錄才能訪問,所以需要有憑證,憑證需要在settings.xml
文件中配置,在~/.m2/settings.xml
文件的servers
元素中加入如下內容:
<server>
<id>maven-nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
注意上面的server->id
的值和pom.xml
中repository->id
的值一致,通過這個id關聯找到憑證的。
setting.xml文件 配置方式
-
setting.xml
的mirrors
元素中加入如下配置<mirror> <id>mirror-nexus</id> <mirrorOf>*</mirrorOf> <name>nexus鏡像</name> <url>http://localhost:8081/repository/maven-public/</url> </mirror>
上面mirrorOf配置的*,說明所有遠程倉庫都通過該鏡像下載構件。
url:這個爲nexus中倉庫組的地址 -
配置訪問憑證
<server> <id>mirror-nexus</id> <username>admin</username> <password>admin123</password> </server>
注意上面的
server->id
的值和pom.xml
中repository->id
的值一致,通過這個id關聯找到憑證的。
將本地構件發佈到私服的2種方式詳解
- 使用maven部署構件至nexus私服
- 手動部署第三方構件至nexus私服:比如我們第三方發給我們的一個包,比如短信發送商的jar包,這個包遠程倉庫是不存在的,我們要把這個包上傳到私服供所有開發使用。
nexus私服中存儲用戶的構件是使用的宿主倉庫,nexus私服中提供了兩個默認的宿主倉庫分別用來存放SNAPSHOT版本和release版本.
第一步:修改項目中pom.xml
的配置,加入下面內容:
<distributionManagement>
<repository>
<id>release-nexus</id>
<url>http://localhost:8081/repository/maven-releases/</url>
<name>nexus私服中宿主倉庫->存放/下載穩定版本的構件</name>
</repository>
<snapshotRepository>
<id>snapshot-nexus</id>
<url>http://localhost:8081/repository/maven-snapshots/</url>
<name>nexus私服中宿主倉庫->存放/下載快照版本的構件</name>
</snapshotRepository>
</distributionManagement>
上面2個url分別是上圖中兩個宿主倉庫的地址
第二步:修改settings.xml
<server>
<id>release-nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshot-nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
注意上面第1個
server->id
的值需要和pom.xml
中的distributionManagement->repository->id
的值一致。
第2個server->id
的值需要和pom.xml
中的distributionManagement->snapshotRepository->id
的值一致。
第三步:執行mvn deploy
命令
執行這個命令的時候,會對構件進行打包,然後上傳到私服中.