使用nexus目的
對我而言,基本是為了解決私有庫問題挂疆。
可以編寫很多aar包上傳上去進(jìn)行依賴改览。避免本地代碼過多問題。
Nexus啟動
Nexus安裝略過缤言,網(wǎng)上教程很多宝当。在mac下就是解壓,然后cd到bin目錄下胆萧,輸入 ./nexus start 啟動成功庆揩。默認(rèn)地址為http://127.0.0.1:8081/,然后第一次登錄會告知密碼位置鸳碧,復(fù)制過來后更改即可盾鳞。
如何上傳文件
在Nexus最右邊有一個Upload,默認(rèn)有兩個庫 maven_releases,nuget-hosted瞻离。我們點(diǎn)擊maven_releases
File
上傳文件路徑文件路徑腾仅,
Extension
文件類型 比如jar ,apk
groupId
定義了項目屬于哪個組套利,最常見就是項目com.xxx.xxx
artifacted
定義了當(dāng)前maven項目在組中唯一的ID,比如你開發(fā)了個庫叫photo-picker推励。這里就寫 photo-picker
Version
當(dāng)前版本鹤耍,SNAPSHOT意為快照,說明該項目還處于開發(fā)中验辞,是不穩(wěn)定的版本稿黄。
案例
androidx.constraintlayout:constraintlayout:2.0.1
groupId是androidx.constraintlayout,artifacted是constraintlayout跌造,Version 2.0.1
點(diǎn)擊Upload
點(diǎn)擊view it now 就到你上傳完成的文件那里了杆怕。
再點(diǎn)擊一下
分別是上傳文件,md5值 sha1值等壳贪。當(dāng)然這些值就是你上傳文件的對應(yīng)的md5值和sha1值
android studio怎么上傳aar包陵珍?
新建一個model,編寫自己需要的代碼,在該modle的bulid.gradle中,添加如下
apply plugin: 'maven'//添加maven依賴
uploadArchives {
repositories {
mavenDeployer {//開發(fā)者
//url 這里填寫自己私服maven地址
repository(url: 'http://127.0.0.1:8081/repository/maven-snapshots/') {
//nexus登錄默認(rèn)用戶名和密碼
authentication(userName: "admin", password: "123456")
}
pom.groupId = "com.sd.jining"http:// 唯一標(biāo)識(通常為模塊包名,也可以任意)
pom.artifactId = "photo_x" // 項目名稱(通常為類庫模塊名稱违施,也可以任意)
pom.version = "1.0.23-SNAPSHOT" // 版本號
pom.packaging = "aar"http://文件類型
}
}
}
Rebuild一下互纯, 此刻右邊應(yīng)該顯示出了這個uploadArchives,
有時候不顯示task任務(wù),
可以如圖設(shè)置
點(diǎn)擊uploadArchives, 應(yīng)該能上傳成功磕蒲。
注意事項(我遇到的坑)
Nexus 私服有三種倉庫類型:Hosted留潦、Proxy和Virtual,另外還有一個 group (倉庫組)用于對多個倉庫進(jìn)行組合辣往。部署的時候只能部署到 Hosted 類型的宿主倉庫中兔院,如果是其他類型就會出現(xiàn)這個 400 錯誤。若是出現(xiàn)這個錯誤站削,只需修改 POM 文件中的部署倉庫到對應(yīng)的宿主倉庫即可解決此問題秆乳。
repository和pom相關(guān)參數(shù) 一定要放在 mavenDeployer 中 不然就會提示路徑錯誤 或者你發(fā)現(xiàn)自己傳了個項目上去,而不是自己的aar庫钻哩。
如果上傳的庫是SNAPSHOT ,version 后面一定要是-SNAPSHOT 不然就會報錯。
發(fā)布了一個版本再發(fā)布就出異常肛冶。下面的設(shè)置請選中 Allow redeploy
上傳成功 街氢,去自己對應(yīng)的庫里找一下看,search 中可以快速搜索
庫的使用
項目build.gradle 設(shè)置
buildscript 和 allprojects- repositories 添加maven 相關(guān),
buildscript {
ext.kotlin_version = "1.5.10"
repositories {
google()
//添加maven 睦袖, 這里要添加用戶名密碼 和對應(yīng)的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 , 這里要添加用戶名密碼 和對應(yīng)的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 引用
這里對應(yīng)的就是之前庫 pom.groupId 和 pom.artifactId 和 pom.version
格式為 implementation groupId :artifactId:version 如下
implementation "com.sd.jining:photo_x:1.0.23-SNAPSHOT"
然后就可以歡快的使用自己打好的庫了馅笙。