Android利用Nexus搭建maven私服

前期準備

參考文獻
本文使用的環境是:
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去下載資源文件
發現報錯:
在這裏插入圖片描述出現這種錯誤大概有幾種情況

  1. 網絡異常
  2. 資源位置配置錯誤
  3. 用戶名密碼錯誤
  4. 防火牆
  5. 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'
    }
}

使用的話就敲擊簡單了
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章