使用nexus目的
對我而言,基本是為了解決私有庫問題。
可以編寫很多aar包上傳上去進行依賴。避免本地代碼過多問題。
Nexus啟動
Nexus安裝略過,網上教程很多。在mac下就是解壓,然后cd到bin目錄下,輸入 ./nexus start 啟動成功。默認地址為http://127.0.0.1:8081/,然后第一次登錄會告知密碼位置,復制過來后更改即可。
如何上傳文件
在Nexus最右邊有一個Upload,默認有兩個庫 maven_releases,nuget-hosted。我們點擊maven_releases
File
上傳文件路徑文件路徑,
Extension
文件類型 比如jar ,apk
groupId
定義了項目屬于哪個組,最常見就是項目com.xxx.xxx
artifacted
定義了當前maven項目在組中唯一的ID,比如你開發了個庫叫photo-picker。這里就寫 photo-picker
Version
當前版本,SNAPSHOT意為快照,說明該項目還處于開發中,是不穩定的版本。
案例
androidx.constraintlayout:constraintlayout:2.0.1
groupId是androidx.constraintlayout,artifacted是constraintlayout,Version 2.0.1
點擊Upload
點擊view it now 就到你上傳完成的文件那里了。
再點擊一下
分別是上傳文件,md5值 sha1值等。當然這些值就是你上傳文件的對應的md5值和sha1值
android studio怎么上傳aar包?
新建一個model,編寫自己需要的代碼,在該modle的bulid.gradle中,添加如下
apply plugin: 'maven'//添加maven依賴
uploadArchives {
repositories {
mavenDeployer {//開發者
//url 這里填寫自己私服maven地址
repository(url: 'http://127.0.0.1:8081/repository/maven-snapshots/') {
//nexus登錄默認用戶名和密碼
authentication(userName: "admin", password: "123456")
}
pom.groupId = "com.sd.jining"http:// 唯一標識(通常為模塊包名,也可以任意)
pom.artifactId = "photo_x" // 項目名稱(通常為類庫模塊名稱,也可以任意)
pom.version = "1.0.23-SNAPSHOT" // 版本號
pom.packaging = "aar"http://文件類型
}
}
}
Rebuild一下, 此刻右邊應該顯示出了這個uploadArchives,
有時候不顯示task任務,
可以如圖設置
點擊uploadArchives, 應該能上傳成功。
注意事項(我遇到的坑)
Nexus 私服有三種倉庫類型:Hosted、Proxy和Virtual,另外還有一個 group (倉庫組)用于對多個倉庫進行組合。部署的時候只能部署到 Hosted 類型的宿主倉庫中,如果是其他類型就會出現這個 400 錯誤。若是出現這個錯誤,只需修改 POM 文件中的部署倉庫到對應的宿主倉庫即可解決此問題。
repository和pom相關參數 一定要放在 mavenDeployer 中 不然就會提示路徑錯誤 或者你發現自己傳了個項目上去,而不是自己的aar庫。
如果上傳的庫是SNAPSHOT ,version 后面一定要是-SNAPSHOT 不然就會報錯。
發布了一個版本再發布就出異常。下面的設置請選中 Allow redeploy
上傳成功 ,去自己對應的庫里找一下看,search 中可以快速搜索
庫的使用
項目build.gradle 設置
buildscript 和 allprojects- repositories 添加maven 相關,
buildscript {
ext.kotlin_version = "1.5.10"
repositories {
google()
//添加maven , 這里要添加用戶名密碼 和對應的url地址 ,url 地址獲取看下面圖
maven {
credentials {
username = 'admin'
password = '123456'
}
url "http://127.0.0.1:8081/repository/maven-snapshots/"
}
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:4.2.2"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
//添加maven , 這里要添加用戶名密碼 和對應的url地址
maven {
credentials {
username = 'admin'
password = '123456'
}
url "http://127.0.0.1:8081/repository/maven-snapshots/"
}
google()
mavenCentral()
jcenter() // Warning: this repository is going to shut down soon
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
在app下build.gradle 引用
這里對應的就是之前庫 pom.groupId 和 pom.artifactId 和 pom.version
格式為 implementation groupId :artifactId:version 如下
implementation "com.sd.jining:photo_x:1.0.23-SNAPSHOT"
然后就可以歡快的使用自己打好的庫了。