Android Bintray、JCenter 替代方案MavenCentral(发布jar,aar到Maven中央仓库)

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
简介: Android Bintray、JCenter 替代方案MavenCentral(发布jar,aar到Maven中央仓库)

Android托管aar新方案MavenCentral

2021年5月1日后, BintrayJCenter将不能使用, Google采用 mavenCentral作为替代。

一、旧方案(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)

该方案使用的 Google官方的 maven-publishsigning插件, 未使用其他第三方插件 :
apply plugin: 'maven-publish'
apply plugin: 'signing'
复制代码

1. 注册账号👉Gradle上传项目到MavenCentral

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. 密钥申请

注: 生成的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…

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
13小时前
|
存储 Java Maven
【JavaEE进阶】 Maven jar 包下载失败问题的解决方法
【JavaEE进阶】 Maven jar 包下载失败问题的解决方法
|
1月前
|
Java Maven 数据安全/隐私保护
maven发布jar包到私服以及从私服下载jar包的操作
maven发布jar包到私服以及从私服下载jar包的操作
|
2月前
|
Java Maven
maven jar 包冲突处理
maven jar 包冲突处理
25 0
|
2月前
|
Java Maven
maven jar排冲突
maven jar排冲突
88 0
|
2月前
|
存储 Java Maven
IDEA常用插件之类Jar包搜索Maven Search
IDEA常用插件之类Jar包搜索Maven Search
73 0
|
2月前
|
域名解析 安全 Java
Maven向中央仓库提交自己的Jar包
Maven向中央仓库提交自己的Jar包
51 0
|
2月前
|
Java Maven
maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题
maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题
|
2月前
|
Java Maven
maven子模块无法继承父模块的jar包解决方案
maven子模块无法继承父模块的jar包解决方案
|
2月前
|
Java Maven 数据安全/隐私保护
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
140 0
|
2月前
|
Java Maven
【解决】maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题...
【解决】maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题...

相关产品

  • 云迁移中心