Android
托管aar
新方案MavenCentral
2021年5月1日后,Bintray
、JCenter
将不能使用,mavenCentral
作为替代。
- Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter👉jfrog.com/blog/into-t…
- JCenter 弃用和服务终止👉developer.android.com/studio/buil…
一、旧方案(bintray)
1.项目build.gradle
buildscript {
ext.kotlin_version = "1.4.31"
repositories {
google()
jcenter()
maven { url "https://dl.bintray.com/javakam/maven" }
}
dependencies {
//classpath 'com.novoda:bintray-release:0.9.2'
classpath 'com.github.panpf.bintray-publish:bintray-publish:1.0.0'
...
}
}
2.具体Module的build.gradle
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'kotlin-kapt'
//id 'com.novoda.bintray-release'
id 'com.github.panpf.bintray-publish'
}
//https://github.com/novoda/bintray-release/wiki/%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3HOME
publish {
repoName = 'maven'
userOrg = 'javakam'
groupId = 'ando.library'
artifactId = 'library'
publishVersion = config.versionAndo
desc = 'Ando Core Library.'
website = "https://github.com/javakam/${rootProject.name}"
//true 上传前测试 ; false 正常上传
//dryRun = true
}
3.上传命令
gradlew clean build bintrayUpload -PbintrayUser=javakam -PbintrayKey=xxx -PdryRun=false
复制代码
二、新方案(mavenCentral)
该方案使用的maven-publish
和signing
插件, 未使用其他第三方插件 :
apply plugin: 'maven-publish'
apply plugin: 'signing'
复制代码
1. 注册账号👉Gradle
上传项目到MavenCentral
- 创建issue issues.sonatype.org
- 注册时填入的信息 :
Project: Community Support - Open Source Project Repository Hosting
Issue Type: New Project
Summary: 描述下你的项目是干啥用的。
Group Id: 输入根GROUP_ID,我是用的是github的域名,比如: com.github.javakam 。
Project URL: 你要发布项目的GitHub地址,比如: https://github.com/javakam/FileOperator 。
SCM URL: 版本控制的URL,就是上面的地址加上".git" 。
复制代码
🍎 大概酱婶儿的 :
创建之后半个小时左右会收到一封邮件, 这里要求我在自己的GitHub
中创建一个指定名称的仓库
2. 密钥申请
- 下载并安装 👉 www.gpg4win.org/get-gpg4win…
注: 生成的secring.gpg
不能直接使用, 会提示异常it may not be a PGP secret key ring
- 解决方式
🌴 stackoverflow.com/questions/2…
The "secring.gpg" file may not be needed in GPG 2.1 and later versions, and can be generated with commands: "gpg --export-secret-keys -o \xxx\secring.gpg"
最后发布
还是有问题...-\_-||
Failed to publish publication 'release' to repository 'mavencentral'
> Could not PUT https://oss.sonatype.org/service/local/staging/deploy/maven2/ando/file/core/1.3.9/core-1.3.9.aar. Received status code 403 from server: Forbidden
复制代码
于是问了客服, 发现是自己的groupId
没写对, 必须得用上面申请时候的那个GitHub
地址PUBLISH_GROUP_ID = "com.github.javakam"
, 不能是其他的。
3. 查看自己的报告 👉 issues.sonatype.org/issues/?fil…
- 地址
https://issues.sonatype.org/issues/?filter=-2
- 选中要发布的项目
Close
后需要等待几分钟进行验证, 成功后再执行release
发布
✨release
成功后就可以在https://s01.oss.sonatype.org/content/repositories/releases
中搜索到你的项目了
4.查看项目 s01.oss.sonatype.org ; 旧版 oss.sonatype.org/
5.Gradle使用MavenCentral中的项目
- 配置maven url
repositories {
//不推荐: 未执行release也可以使用
maven {url "https://s01.oss.sonatype.org/content/repositories/comgithubjavakam-1000"}
//推荐: release成功后会直接从mavenCentral拉取aar
mavenCentral()
//或者
maven {url "https://s01.oss.sonatype.org/content/groups/public"}
//或者
maven {url "https://s01.oss.sonatype.org/content/repositories/releases"}
}
复制代码
- 复制Maven XML( Ctrl + c)
Ctrl + vAndroid Studio
会自动按照格式groupId : artifactId : version
引入, 无需手动拼接!!!
🍎需要在依赖的最后面加上@aar
👉implementation 'com.github.javakam:ando.file.core:1.4.0@aar'
, 抑制Failed to resolve: com.github.javakam:ando.file.core:1.4.0 Show in Project Structure dialog
注意:Android
中使用的是aar
不是jar
演示项目👉github.com/javakam/Fil…
local.properties
文件不要上传, 内容格式为
sdk.dir=Android SDK 路径
## 上传配置
signing.keyId=xxx
signing.password=秘钥密码
signing.secretKeyRingFile=C\:\\xxx\\xxx\\secring.gpg
ossrhUsername=sonatype 帐号
ossrhPassword=sonatype 密码
复制代码
参考
官方文档
使用 Maven Publish 插件👉developer.android.com/studio/buil…
Maven Publish Plugin👉docs.gradle.org/current/use…
Deploying to OSSRH with Gradle👉central.sonatype.org/pages/gradl…
Windows(推荐) 👉xiaozhuanlan.com/topic/61748…
Mac👉zhuanlan.zhihu.com/p/359228319
英文👉proandroiddev.com/publishing-…
Publishing Android libraries to MavenCentral in 2021👉getstream.io/blog/publis…