Nexus 官網(wǎng):http://www.sonatype.com/
前言
什么是maven履植、gradle
Maven是一個(gè)項(xiàng)目管理和自動構(gòu)建工具计雌。
Gradle是一個(gè)基于Apache Ant和Apache Maven概念的項(xiàng)目自動化建構(gòu)工具悄晃。它使用一種基于Groovy的特定領(lǐng)域語言來聲明項(xiàng)目設(shè)置玫霎,而不是傳統(tǒng)的XML。
為什么搭建maven私有倉庫
做java開發(fā)的童鞋對Maven一定不陌生妈橄;做android開發(fā)的童鞋庶近,用得最多的是gradle。其實(shí)gradle的第三方庫眷蚓,也是放在maven倉庫上鼻种。
對于第三方庫,大家基本都配置maven沙热、gradle從遠(yuǎn)程獲取叉钥,估計(jì)很少直接下載jar放在工程里(對于沒有放在maven repository上的庫罢缸,只能這么干)。這么做方便管理依賴投队。
app開發(fā)中遇到問題
做app開發(fā)枫疆,特別是只有幾萬行代碼量的小項(xiàng)目,開發(fā)團(tuán)隊(duì)也就幾個(gè)人敷鸦,通常只用一個(gè)工程玩耍息楔。隨著業(yè)務(wù)擴(kuò)展,工程變得越來越大扒披,代碼量大大增加值依,開發(fā)人數(shù)也多了,問題開始暴漏:改動一個(gè)地方往往影響到其他人的代碼碟案,功能模塊耦合嚴(yán)重愿险,構(gòu)建速度慢....
業(yè)界一些解決方法:1.組件化,按功能拆分出各種組件蟆淀,數(shù)據(jù)存儲拯啦、網(wǎng)絡(luò)層、日志 等熔任;2.拆分業(yè)務(wù)褒链,一個(gè)業(yè)務(wù)一個(gè)module;3.業(yè)務(wù)插件化疑苔,一個(gè)業(yè)務(wù)一個(gè)工程甫匹,每個(gè)業(yè)務(wù)獨(dú)立編譯并運(yùn)行.....
因此,引入依賴管理是必不可少的惦费。把各個(gè)模塊單獨(dú)編譯兵迅,部署上maven倉庫,主工程or業(yè)務(wù)工程通過maven薪贫、gradle引用這些依賴恍箭。這么做還有好處,就是持續(xù)集成瞧省!某個(gè)模塊修改了扯夭,跑單元測試,通過后才放上倉庫鞍匾。業(yè)務(wù)工程同步一下maven交洗,萬一有問題,還可以在服務(wù)端回滾到上一個(gè)版本橡淑。
(筆者對持續(xù)集成怕有誤构拳,關(guān)于持續(xù)集成可以參考這篇文章《談?wù)劤掷m(xù)集成,持續(xù)交付,持續(xù)部署之間的區(qū)別》)
- 單獨(dú)編譯置森、單獨(dú)部署
- 靈活管理依賴
- 便于持續(xù)集成
搭建
安裝Java Envirment
由于Nexus不支持OpenJDK斗埂,所以必須卸裝OpenJDK并安裝Oracle Java。參考 如何在Ubuntu Linux上安裝Oracle Java (可能要翻墻)
下載Nexus Repository OSS
筆者系統(tǒng)環(huán)境是ubuntu16.04(在windows上vmware虛擬)凫海,所以下載了Unix nexus-3.0.1版本蜜笤。例如下載到$HOME
下,然后解壓壓縮包:
$ tar xvzf nexus-3.0.1-01-unix.tar.gz
啟動Nexus
進(jìn)入nexus根目錄下的bin:
cd ./nexus-3.0.1-01/bin
運(yùn)行Nexus:
sudo ./nexus run
運(yùn)行成功后盐碱,會出現(xiàn)
Started Sonatype Nexus OSS 3.0.1-01
訪問nexus UI界面
在ubuntu打開瀏覽器把兔,輸入http://localhost:8081/
:
當(dāng)然,只要知道ubuntu虛擬機(jī)內(nèi)網(wǎng)ip瓮顽,也可以在windows通過內(nèi)網(wǎng)ip訪問nexus
配置為Linux Service
編輯.bashrc
文件(通常在用戶根目錄):
gedit .bashrc
配置$NEXUS_HOME
為nexus絕對路徑县好,在文件末尾加入:
NEXUS_HOME="/home/{user}/nexus-3.0.1-01"
編輯bin/nexus.rc
:
run_as_user="nexus"
在/etc/init.d
放nexus軟連接
sudo ln -s $NEXUS_HOME/bin/nexus /etc/init.d/nexus
運(yùn)行服務(wù)
update-rc.d.
cd /etc/init.d
sudo update-rc.d nexus defaults
sudo service nexus start
官網(wǎng)有chkconfig
、update-rc.d
暖混、systemd
三種方式缕贡,筆者選擇最簡單的update-rc.d
。
(開啟ubuntu第一次執(zhí)行start拣播,可能要等上幾十秒才能啟動)
用戶操作界面
登陸
假設(shè)ubuntu ip地址是192.168.86.130
晾咪,瀏覽http://192.168.86.130:8081/
打開用戶界面(前面已提到)。點(diǎn)擊右上角Sign in
登陸贮配,默認(rèn)賬號admin谍倦,密碼admin123
登陸后:
創(chuàng)建用戶
在配置頁面,選擇Security - User
泪勒,點(diǎn)擊create user
:
填寫用戶信息昼蛀,再點(diǎn)擊最底下的create user
即可創(chuàng)建用戶
創(chuàng)建xiaoming用戶后,可以Sign out
圆存,用xiaoming賬號登陸了叼旋。
創(chuàng)建maven倉庫
在配置界面,選擇Repository - repositories
沦辙,圖中紅色選線框著的是默認(rèn)倉庫夫植。點(diǎn)擊create repository
這里簡單介紹下幾種repository的類型:
- hosted,本地倉庫油讯,通常我們會部署自己的構(gòu)件到這一類型的倉庫详民。比如公司的第二方庫。
- proxy撞羽,代理倉庫阐斜,它們被用來代理遠(yuǎn)程的公共倉庫衫冻,如maven中央倉庫诀紊。
- group,倉庫組,用來合并多個(gè)hosted/proxy倉庫邻奠,當(dāng)你的項(xiàng)目希望在多個(gè)repository使用資源時(shí)就不需要多次引用了笤喳,只需要引用一個(gè)group即可。
我們的目的僅僅管理自己開發(fā)的組件碌宴,選擇host
即可杀狡。
填寫倉庫配置
version policy,可以選Release或Snapshot贰镣,如果倉庫開放給所有人呜象,那選Release比較好,如果公司內(nèi)部或自己用碑隆,其中一個(gè)就可以恭陡。
倉庫xiaoming-host創(chuàng)建完畢
查看倉庫的項(xiàng)目
如果上傳了項(xiàng)目,在Nexus用戶界面上煤,選擇components
-> xiaoming-host
小結(jié)
google一下“Nexus搭建”休玩,很多文章都是基于2.x版本,3.x安裝教程相對少一些劫狠,筆者因?yàn)檎也坏胶芎玫奈恼滤┌蹋艣Q定自己寫一篇。官方文檔還是挺容易理解的独泞,步驟也很清晰呐矾,建議大家在搭建過程不懂時(shí),查閱官方文檔懦砂。
相關(guān)閱讀
《InteliJ上傳Java項(xiàng)目到Maven倉庫》
《Android Studio上傳項(xiàng)目到Maven倉庫》
《發(fā)布Android Library到Bintray凫佛、JCenter》