Nexus 官網:http://www.sonatype.com/
前言
什么是maven、gradle
Maven是一個項目管理和自動構建工具。
Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基於Groovy的特定領域語言來聲明項目設置,而不是傳統的XML。
為什么搭建maven私有倉庫
做java開發的童鞋對Maven一定不陌生;做android開發的童鞋,用得最多的是gradle。其實gradle的第三方庫,也是放在maven倉庫上。
對於第三方庫,大家基本都配置maven、gradle從遠程獲取,估計很少直接下載jar放在工程里(對於沒有放在maven repository上的庫,只能這么干)。這么做方便管理依賴。
app開發中遇到問題
做app開發,特別是只有幾萬行代碼量的小項目,開發團隊也就幾個人,通常只用一個工程玩耍。隨着業務擴展,工程變得越來越大,代碼量大大增加,開發人數也多了,問題開始暴漏:改動一個地方往往影響到其他人的代碼,功能模塊耦合嚴重,構建速度慢....
業界一些解決方法:1.組件化,按功能拆分出各種組件,數據存儲、網絡層、日志 等;2.拆分業務,一個業務一個module;3.業務插件化,一個業務一個工程,每個業務獨立編譯並運行.....
因此,引入依賴管理是必不可少的。把各個模塊單獨編譯,部署上maven倉庫,主工程or業務工程通過maven、gradle引用這些依賴。這么做還有好處,就是持續集成!某個模塊修改了,跑單元測試,通過后才放上倉庫。業務工程同步一下maven,萬一有問題,還可以在服務端回滾到上一個版本。
(筆者對持續集成怕有誤,關於持續集成可以參考這篇文章《談談持續集成,持續交付,持續部署之間的區別》)
- 單獨編譯、單獨部署
- 靈活管理依賴
- 便於持續集成
搭建
官方文檔:https://help.sonatype.com/repomanager2/installing-and-running
安裝Java Envirment
由於Nexus不支持OpenJDK,所以必須卸裝OpenJDK並安裝Oracle Java。參考 如何在Ubuntu Linux上安裝Oracle Java (可能要FQ)
下載Nexus Repository OSS
筆者系統環境是ubuntu16.04(在windows上vmware虛擬),所以下載了Unix nexus-3.0.1版本。例如下載到$HOME
下,然后解壓壓縮包:
$ tar xvzf nexus-3.0.1-01-unix.tar.gz
啟動Nexus
進入nexus根目錄下的bin:
cd ./nexus-3.0.1-01/bin
運行Nexus:
sudo ./nexus run
運行成功后,會出現
Started Sonatype Nexus OSS 3.0.1-01

訪問nexus UI界面
在ubuntu打開瀏覽器,輸入http://localhost:8081/
:
當然,只要知道ubuntu虛擬機內網ip,也可以在windows通過內網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
運行服務
update-rc.d.
cd /etc/init.d
sudo update-rc.d nexus defaults
sudo service nexus start
官網有chkconfig
、update-rc.d
、systemd
三種方式,筆者選擇最簡單的update-rc.d
。
(開啟ubuntu第一次執行start,可能要等上幾十秒才能啟動)
用戶操作界面
登陸
假設ubuntu ip地址是192.168.86.130
,瀏覽http://192.168.86.130:8081/
打開用戶界面(前面已提到)。點擊右上角Sign in
登陸,默認賬號admin,密碼admin123


登陸后:

創建用戶
在配置頁面,選擇Security - User
,點擊create user
:

填寫用戶信息,再點擊最底下的create user
即可創建用戶


創建xiaoming用戶后,可以Sign out
,用xiaoming賬號登陸了。
創建maven倉庫
在配置界面,選擇Repository - repositories
,圖中紅色選線框着的是默認倉庫。點擊create repository


這里簡單介紹下幾種repository的類型:
- hosted,本地倉庫,通常我們會部署自己的構件到這一類型的倉庫。比如公司的第二方庫。
- proxy,代理倉庫,它們被用來代理遠程的公共倉庫,如maven中央倉庫。
- group,倉庫組,用來合並多個hosted/proxy倉庫,當你的項目希望在多個repository使用資源時就不需要多次引用了,只需要引用一個group即可。
我們的目的僅僅管理自己開發的組件,選擇host
即可。
填寫倉庫配置

version policy,可以選Release或Snapshot,如果倉庫開放給所有人,那選Release比較好,如果公司內部或自己用,其中一個就可以。
倉庫xiaoming-host創建完畢

查看倉庫的項目
如果上傳了項目,在Nexus用戶界面,選擇components
-> xiaoming-host

小結
google一下“Nexus搭建”,很多文章都是基於2.x版本,3.x安裝教程相對少一些,筆者因為找不到很好的文章,才決定自己寫一篇。官方文檔還是挺容易理解的,步驟也很清晰,建議大家在搭建過程不懂時,查閱官方文檔。