為什么要搭建私服
搭建Nexus私服的主要目的是為了解決工作上組件之間的jar包依賴管理茎匠。特別是基礎(chǔ)架構(gòu)部門的jar包要共享出來娃肿,就需要把jar包deploy發(fā)布到nexus私服上间护。
第一步: 安裝Nexus
準(zhǔn)備工作
- 找一臺linux系統(tǒng)的虛擬機服務(wù)器待讳,系統(tǒng)centos 7
- jdk 1.8
- nexus-3.9.0-01-unix.tar.gz
- 客戶端安裝了maven
下載與安裝
- 下載安裝包:https://pan.baidu.com/s/1LjwzEax71H6emkUL3uZRcw煌茴,可以到官網(wǎng)上去下載最新版本的义辕。
- 上傳并解壓安裝包
xshell工具將安裝包上傳服務(wù)器:/usr/local/nexus目錄下
執(zhí)行解壓:
tar -xzvf nexus-3.9.0-01-unix.tar.gz
- 修改配置
可以在nexus-default.properties文件中(位于/nexus-3.9.0-01/etc/目錄下)修改WEB訪問端口等信息,默認(rèn)為8081端口衣撬;
防火墻放行8081端口乖订; - 啟動
執(zhí)行: cd nexus-3.9.0-01/bin,進入到bin目錄具练,執(zhí)行:
./nexus run
檢驗是否安裝成功
打開瀏覽器乍构,訪問:http://ip地址:8081/
默認(rèn)用戶名 admin 默認(rèn)密碼 admin123
到此,Nexus 安裝完成扛点。
第二步: 配置Nexus
私服工作原理:
配置Nexus之前哥遮,需要先了解一下私服的工作原理,如下圖:
找依賴包的流程: 首先在本地倉庫中找陵究,如果沒命中眠饮,那么就找遠程私服;遠程私服的查找規(guī)則同樣是先找host屬性的私有庫铜邮,然后再去找proxy屬性的遠程倉庫仪召;可以配置多個proxy寨蹋;
Nexus倉庫類型介紹
默認(rèn)安裝有以下這幾個倉庫,在控制臺也可以修改遠程倉庫的地址扔茅,第三方倉庫等已旧。
- hosted(宿主倉庫庫) :存放本公司開發(fā)的jar包(正式版本、測試版本)
- proxy(代理倉庫):代理中央倉庫召娜、Apache下測試版本的jar包
- group(組倉庫):使用時連接組倉庫运褪,包含Hosted(宿主倉庫)和Proxy(代理倉庫)
分組倉庫的配置
如上圖所示,maven-public就我創(chuàng)建的組倉庫玖瘸。以及還創(chuàng)建了3個代理倉庫秸讹,如下。
1雅倒、jCenter阿里云倉庫:http://maven.aliyun.com/nexus/content/groups/public/
2璃诀、maven中央倉庫:https://repo1.maven.org/maven2/
最后建立組倉庫maven-public,如下屯断。
組倉庫中包含了jcenter文虏、maven-central、本地maven-releases殖演,本地maven-snapshots。
** 至此年鸳,Nexus基本就這么配置好了趴久,主要在Group組中配置一個代理私服。**
第三步:配置下載依賴 setting.xml
添加maven倉庫鏡像
創(chuàng)建好組倉庫之后搔确,修改setting.xml文件彼棍,添加maven倉庫鏡像,如下:
<mirror>
<id>nexus-myself</id>
<!--*指的是訪問任何倉庫都使用我們的私服-->
<mirrorOf>*</mirrorOf>
<name>Nexus myself</name>
<url>http://192.168.124.29:8081/repository/maven-public/</url>
</mirror>
全局配置下載依賴(即項目pom無需配置)
在maven的setting.xml文件中配置私服配置膳算,這種方式配置后所有本地使用該配置的maven項目的pom文件都無需配置私服下載相關(guān)配置座硕。
<profiles>
<profile>
<id>mycof</id>
<repositories>
<!-- 私有庫地址-->
<repository>
<id>nexus</id>
<url>http://192.168.124.29:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!--插件庫地址-->
<pluginRepository>
<id>nexus</id>
<url>http://192.168.124.29:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
激活使用上面的配置
<!--激活profile-->
<activeProfiles>
<activeProfile>mycof</activeProfile>
</activeProfiles>
單獨項目下載依賴(即項目pom文件中配置)
這種配置是修改單個項目的pom文件,無需修改maven的setting配置
<repositories>
<repository>
<id>nexus</id>
<url>http://192.168.124.29:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
建議使用全局的setting配置涕蜂,一個項目組共用一個maven的setting配置华匾,項目中就無需配置下載相關(guān)的私服倉庫配置
第四步:上傳jar包配置
對于中央倉庫沒有的jar包,需要我們自己將jar包發(fā)布到私服中去机隙,其中jar包主要分為兩類蜘拉,
一類是本地自己開發(fā)供給項目組其余同事使用,這種直接配置項目的pom文件和maven的setting文件有鹿,之后deploy發(fā)布即可發(fā)布到旭旭;
另一類是第三方j(luò)ar包,可以直接使用web頁面上傳并設(shè)置對應(yīng)GAV即可葱跋;
本地maven開發(fā)的項目上傳配置
1.maven的setting文件配置
這里要配置配置上傳用戶及倉庫信息持寄,我這里直接使用了admin用戶源梭,在nenus2.x中還內(nèi)置了一個deployment/deployment123用戶,在3.x該用戶被移除了稍味,這里可以自己配置角色和用戶咸产,我就直接使用admin用戶了
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
2.項目中的pom文件配置
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>Nexus Release Repository</name>
<url>http://192.168.124.29:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.124.29:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
3.執(zhí)行maven的deploy命令
這是myeclipse中上傳本地項目jar到私服,IDEA中更為簡單直接點擊maven周期中的deploy即可
出現(xiàn)uploading信息并且沒報錯說明上傳成功仲闽。
然后到對應(yīng)的倉庫中查看
注意:
這里只有Snapshot的倉庫上傳成功脑溢,Release倉庫并沒有上傳成功,這是因為版本號名稱結(jié)尾有SNAPSHOT赖欣,默認(rèn)以這個結(jié)尾是不會上傳到Release倉庫去的屑彻,去除就會上傳到Release倉庫且不會上傳到快照倉庫
Release倉庫默認(rèn)不支持重復(fù)發(fā)布,可配置
注意setting中server標(biāo)簽下的id要和pom文件中倉庫配置的id相同顶吮,即指定上傳到哪個倉庫
第三方j(luò)ar包上傳
對于第三方j(luò)ar包的上傳采用nenus提供的web界面上傳社牲,上傳成功后需要使用該jar包的話,依賴中填寫自定義的GAV即可