前期準備
參考文獻
本文使用的環境是:
Mac開發機 + Nexus v3.20.1-01 + Android Studios v3.6.1
整理後的項目放在了github上:https://github.com/lzy-h2o2/Nexus-Maven
資源下載
訪問sonatype下載對應系統的資源,速度貌似很慢,有時候還下載不了,我放在了百度雲盤點這裏訪問,密碼: u7uc。
安裝部署環境
上一步下載後的資源解壓後會有兩個目錄,一個是軟件目錄,一個是nexus平臺目錄
此時可以採用默認配置進入到bin命目錄下,在終端執行命令啓動nexus,其他知識點參見參考文獻。
默認端口:8081
默認系統管理員用戶名:admin
默認系統管理員密碼:admin123
我們可以輸入nexus status命令查看運行狀態。
在瀏覽器中輸入訪問地址,我這裏是:http://192.168.3.4:8081/
可以在nexus.properties這裏修改默認地址:
查看本機IP後訪問8081端口:
瀏覽器訪問:
至此nexus環境已經配置完成。
創建maven倉庫
使用默認管理員賬戶登錄可以看到類似如下默認倉庫
我們可以點擊設置新建用戶用於管理
創建新的用戶
勾選2是因爲admin倉庫也可以查看當前用戶下面的倉庫,按需設置,退出當前admin賬戶,使用新建的賬戶重新登錄系統。
新建maven倉庫
如果是新建存儲倉庫的話需要選擇host的類型,如下:
至此本地maven倉庫創建成功
我們可以複製該倉庫的本地地址用於android studios上傳地址備用
上傳本地資源至maven倉庫
打開android studios新建moudle倉庫如圖:
圍爲了方便統一管理,我在lib_testmoudle根目錄下新建了一個配置文件,用於設置maven倉庫的相關配置
在lib_testmoudle根目錄下build.gradle中進行腳本設置,自android studios2.2版本以後編輯器默認支持maven插件,不需要再配置classpath了。
上傳資源倉庫腳本(其中project.ext指的就是上面我單獨創建的配置文件的引用)
uploadArchives {
def MAVEN_REPO_RELEASE_URL = project.ext.maven_url
def NEXUS_USERNAME = project.ext.user_name
def NEXUS_PASSWORD = project.ext.psw
def DESCRIPTION = project.ext.description
def ARTIFACT_ID = project.ext.artifactId
def GROUP_ID = project.ext.groupId
def VERSION = project.ext.version
def TYPE = project.ext.type
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: MAVEN_REPO_RELEASE_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
version VERSION
artifactId ARTIFACT_ID
groupId GROUP_ID
packaging TYPE
description DESCRIPTION
}
}
}
}
然後在android studios右上角gradle視窗中可以管理任務腳本uploadArchives
雙擊就可以進行編譯並上傳資源文件至本地maven倉庫了
我們瀏覽器打開後臺管理頁面就可以看到倉庫中已經有上傳的資源
使用本地倉庫
還是以本例創建的項目爲例,app model想要引用該本地倉庫,我們可以在moudle app根目錄下的build.gradle中添加allprojects引用腳本節點,一版我們都是在整個項目空間的build.gradle下引用的,一勞永逸,比較方便。
首先添加下載地址,前面已經複製的倉庫地址
其次,在需要引用的moudle根目錄build.gradle腳本中添加倉庫引用
(可以在nexus系統中直接複製,到AS中會自動轉化)
有的時候需要在說明引用的資源類型,比如
compile 'com.zndroid:hello-maven:1.0.2@aar'
編譯運行
經過以上操作我們進行編譯,讓AS去下載資源文件
發現報錯:
出現這種錯誤大概有幾種情況
- 網絡異常
- 資源位置配置錯誤
- 用戶名密碼錯誤
- 防火牆
- AS進行了代理配置
我們根據具體錯誤代碼進一步查看問題
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200406151631402.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1emhlbnl1eGZjeQ==,size_16,color_FFFFFF,t_70
解決方案一
401錯誤,也就是用戶未授權問題,點擊藍色鏈接跳轉到瀏覽器,輸入用戶名密碼發現是可以訪問的,也就是位置和網絡配置是正確的,那麼401問題,是由於我們麼有授權任意用戶進行訪問的配置,我們在nexus後臺進做如下更改即可:
將複選框勾選即可。
重新編譯發現成功了!!!
External lLibraries可以查看引用狀態
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/2020040615261710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1emhlbnl1eGZjeQ==,size_16,color_FFFFFF,t_70
解決方案二
在 [使用本地倉庫]章節 使用maven倉庫時添加賬號授權
maven {
url 'http://192.168.3.4:8081/repository/zndroid/'
credentials {
username 'lazy'
password '123456'
}
}
使用的話就敲擊簡單了