Mac搭建私有maven倉庫,提供Nexus Responsitory鏡像
背景
最近項目陸續都切換到了Android Studio,同時切換到gradl編譯,但是經常由于墻的問題使用的新的插件更新的速度非常慢。因此決定在自己的Mac機器上部署一套私有倉庫代理,即用于自己的開發,也可以提供給團隊或者自己其余的機器使用。
安裝步驟
前置條件:
- 已經安裝有jdk;如果沒有安裝jdk可以點擊查看Mac下怎么安裝JDK。
安裝Sonatype Nexus
Sonatype Nexus是現在比較流行和成熟的私有倉庫搭建工具,透過nexus可以很輕松的搭建私有倉庫。
-
下載nexus
將工作目錄切換到下載目錄,然后使用命令行下載nexus最新版的安裝包
wget http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz
目前最新版為nexus-2.12.0-01,下載完以后,目錄會存在名為nexus-2.12.0-01-bundle.tar.gz的文件。
-
解壓縮
在目錄下運行解壓縮命令:
tar zxvf nexus-2.12.0-01-bundle.tar.gz
解壓縮以后目錄出現名為nexus-2.12.0-01文件夾
-
拷貝到目標位置
將解壓后的nexus-2.12.0-01文件夾拷貝到你的用戶庫目錄。通常為
/usr/loal/
,個人一般用自己專門的位置。mv nexus-2.12.0-01 ~/zixie/Library/
至此nexus已經安裝OK了,等修改好相關的啟動配置,就可以使用了。
配置修改
- 在Nexus的安裝目錄找到/bin/nexus
- 使用文本編輯器(如sublime)打開nexus
-
修改Nexus home
設置Nexus的根目錄,就是上面部署nexus的為位置,例如:
NEXUS_HOME="/Users/zixie/zixie/Library/nexus-2.12.0-01"
-
設置平臺類型和啟動方式
RUN_AS_USER=root PLATFORM=macosx-universal-64 PLATFORM_DIR="${NEXUS_HOME}/bin/jsw/${PLATFORM}"
-
設置wrapper相關配置
WRAPPER_CMD="${PLATFORM_DIR}/wrapper" WRAPPER_CONF="${PLATFORM_DIR}/../conf/wrapper.conf" PIDDIR="${NEXUS_HOME}"
啟動服務
至此所有安裝以及配置相關的內容都已經OK,接下來需要啟動Nexus服務。
-
切換到root。
Nexus啟動需要使用root用戶,在命令行輸入:
sudo su
輸入密碼以后即可切換到root用戶。
-
啟動服務
在root用戶下,運行安裝目錄下/bin下面的Nexus命令,即可啟動Nexus:
/Users/zixie/zixie/Library/nexus-2.12.0-01/bin/nexus start
當然也可以將bin目錄配置到環境變量,后續就可以直接敲命令而不用帶上路徑了,這個看個人需求。
驗證和配置Nexus Respository
驗證
Nexus安裝完成以后,成功啟動服務以后,打開瀏覽器,輸入:http://localhost:8081/nexus/即可打開配置管理段的頁面。則說明安裝成功了。
配置Respository
點擊界面右上角 “Log in”,然后輸入賬號密碼(默認用戶名:admin密碼:admin123)即可登入管理段。
進入界面以后,點擊左側Repositories,右側會出現很多庫的配置,由于個人只是用來代理第三方庫,因此把除了Central以外的其余庫都刪了。然后根據個人需求配置對應的repository。
點擊add,選擇 proxy Repository,然后添加相關配置。下圖為個人添加oschina的鏡像的相關配置:
配置完所有配置以后點擊save,即可把oschina添加到代理倉庫。
開啟自動下載
選擇一個Repositories,然后點擊下面的Configuration,然后將Remote Repository Access里面的Download Remote Indexes設置為true,Nexus就會自動從中央倉庫更新資源了。
特別說明:一般很多鏡像庫都非常大,建議只選擇自己需要的部分添加就可以了,不然自動下載的結果就是硬盤被吃滿
代理設置
由于公司內網存在代理,因此為了讓倉庫正常使用,需要添加網絡代理。在左側Administraion中選擇Server,在里面有設置Http Proxy的地方,配置對應的代理即可。如下圖:
使用私有庫
到目前為止,就完成了私有庫的搭建,項目此時build.gradle腳本中的repository就可以使用自己的庫了。例如在某個Android的build中,就可以將build.gradle修改為下面這樣:
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { maven { url "http://localhost:8081/nexus/content/repositories/android"} } dependencies { classpath "com.android.tools.build:gradle-experimental:0.2.+" } } allprojects { repositories { maven { url "http://localhost:8081/nexus/content/repositories/android"} } }