文章目錄
- 前言
- Nexus
- 下載
- 啟動服務
- 進行nexus管理
- 倉庫
- 權限
- 配置Gradle進行模塊上傳
- 配置Gradle依賴私有代碼庫
前言
在進行Android開發的時候,我們參考第三方開源庫時都是如下所示:
implementation 'com.android.support:appcompat-v7:28.0.0'
然而,在作業時我們會發現,并不是所有代碼都可以對外開放的,當專案很多的時候,想使用一些通用的模塊時,就不得不復制粘貼然后參考它,
頻繁復制粘貼只是小事情,畢竟大家都是老CV工程師了,最痛苦的是當A專案發現模塊的一個小bug,此時B、C、D等等使用了這個模塊的專案都要改一遍,非常的痛苦,
Nexus
使用Nexus搭建一個私有代碼庫,就可以像參考第三方開源庫一樣參考自己的私有模塊,我們直接進入教程,本文使用的版本為Nexus3.30.0-01,作業系統為window,
下載
https://www.sonatype.com/product/repository-oss-download
下載這一步比較簡單,只需要填寫郵箱等資訊,就可以進行下載,3種作業系統的版本都支持,
下載完成以后進行解壓,可以得到nexus-3.30.0-01和sonatype-work兩個檔案夾
- nexus-3.30.0-01 : 包括nexus服務運行的各種檔案
- sonatype-work : 倉庫快取檔案,如果需要備份倉庫,備份這個檔案夾即可
啟動服務
進入./nexus-3.30.0-01/bin/檔案夾,在此檔案夾下以管理員身份運行CMD
注意:一定要以管理員身份運行
依次執行以下命令:
nexus.exe/install //用于下載nexus服務
nexus.exe/start //用于啟動nexus服務

進行nexus管理
在成功啟動服務以后,既可以在瀏覽器輸入“http://localhost:8081/”打開nexus提供的管理頁面,如果你的nexus搭建在另一臺內網服務器或者云端上,你可以輸入“http://Ip:8081/”
如果你不想使用8081這個埠,可以在./nexus-3.30.0-01/etc/nexus-default.properties檔案中進行修改
nexus默認提供了2個賬號admin(管理員)和anonymous(訪客),首次登錄admin的密碼保存在./sonatype-work/nexus3/檔案夾下,首次登錄頁面也會有這一方面的引導,登錄后可看到如下圖的頁面

下面對一些常用的選項進行說明:
倉庫
Nexus將倉庫分為三種即group、hosted、proxy
- group:顧名思義,它是倉庫組,可以將多個倉庫整合為一個倉庫,例如我們定義了一個倉庫組A,并且把B、C、D三個倉庫添加進A組,那么我們通過參考A的依賴就可以呼叫到BCD的內容,
- hosted:本地倉庫,表示該倉庫為本機創建的,簡單說就是你的私有代碼庫
- proxy:代理倉庫,nexus的另一大功能,代理就通過這種型別的倉庫實作,
Nexus默認會幫我們創建幾個倉庫,可以直接拿來用,如果你想做一些定制化的操作,可以學習更高級的用法,這里我只做簡單的使用,
注意:默認創建的倉庫會有兩個hosted倉庫,分別為maven-releases和maven-snapshots兩個,簡單來說它們就和“release-debug”之間的關系一樣,
權限
Nexus默認提供了兩種權限(Role),即nx-admin和nx-anonymous,在創建賬號(User)的時候可以選擇對應的權限賦予這個賬號,初次使用我們不做過多的權限介紹,我們直接使用admin即可,
配置Gradle進行模塊上傳
- 首先我們在gradle.properties檔案定義好一些全域變數
# Maven倉庫的URL
MAVEN_REPO_RELEASE_URL=http://localhost:8081/repository/maven-releases/
# 登錄nexus ossde的用戶名
NEXUS_USERNAME=admin
#登錄nexus oss的密碼
NEXUS_PASSWORD=0b854d20-9884-4d57-9e8e-63cdec1ab3c5
# groupid最終參考時的名字
GROUP_ID=com.mot.test
# 對應Mavern的artifactId
POM_ARTIFACT_ID=test
# version
VERSION_NAME=0.0.1
- 其次我們在需要上傳的moudle,修改其build.gradle
apply plugin: 'maven' //參考maven插件
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: MAVEN_REPO_RELEASE_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
version VERSION_NAME
artifactId POM_ARTIFACT_ID
groupId GROUP_ID
}
}
}
}
配置完以上以后,就可以在Android Studio提供的Gradle插件中上傳模塊了,雙擊如下圖所示的插件

上傳成功以后就可以再網頁上查看到對應的aar包

如果在這里出現了上傳失敗的情況,那會可能是如下兩種情況出現了問題:
- 賬號密碼對應的權限不夠,或者賬號密碼錯誤,
- 倉庫設定了“Disable redeploy”,導致相同版本號上傳失敗,如下圖所示

配置Gradle依賴私有代碼庫
到了這一步,我們已經可以將自己的模塊上傳至nexus了,接下來是最后一步了,這一步也是比較坑的,
- 首先配置全域build.gradle
allprojects {
repositories {
maven {
url 'http://localhost:8081/repository/maven-public/'
credentials {
username 'admin'
password '0b854d20-9884-4d57-9e8e-63cdec1ab3c5'
}
}
google()
jcenter()
}
}
- 其次配置需要使用依賴的模塊的build.gradle
implementation 'com.mot.test:test:0.0.1'
// 參考格式為:
// implementation 'GROUP_ID:POM_ARTIFACT_ID:VERSION_NAME'
// 與上一步對應的全域變數相對應
配置完成以后,點擊sync gradle 可能會出現 ERROR: Unable to resolve dependency for… 的問題,總結了以下解決方法,
-
全域build.gradle 配置maven 的url、賬號和密碼時,填寫錯誤,url可以在nuexs網頁上復制

-
檢查你上傳的模塊,是否還依賴了其他的第三方SDK,如果你依賴了第三方的SDK例如一個指紋模塊,別的廠商給你提供了一個aar檔案,然后你在本地libs內參考了,這種情況需要將第三方aar檔案單獨上傳到nuexs上,然后模塊中在參考,如下圖所示:

上傳完成以后,在自己的模塊中參考:
implementation 'com.mot.othersdk:test:0.0.1@aar'
//注意這里一定要加上@aar后綴,不然默認會去找jar型別,也會提示Unable to resolve dependency
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/273754.html
標籤:其他
上一篇:Android 版本更新
