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

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

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

?

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,搭建一个在线教育视频课程分享网站。
相关文章
|
4天前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4天前
|
Java Maven
maven依赖原则以及jar包冲突
该文介绍了Maven依赖原则:最短路径优先,申明顺序优先和覆写优先。当有冲突时,Maven选择路径最短的版本,按POM中声明顺序加载,并且子POM的依赖优先于父POM。解决冲突最佳方式是通过`mvn dependency:tree`检查依赖树并调整POM文件中的坐标顺序。
35 2
|
4天前
|
Java 测试技术 Maven
maven 打jar包:mvn clean package
maven 打jar包:mvn clean package
32 7
|
4天前
|
Java Maven
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录(一)
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录
18 0
|
4天前
|
Java Go Maven
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录(二)
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录
13 0
|
4天前
|
Android开发
Android 新建一个lunch项(全志方案)
Android 新建一个lunch项(全志方案)
19 0
|
4天前
|
Java Maven 数据安全/隐私保护
如何上传自己的Jar到Maven中央仓库
如何上传自己的Jar到Maven中央仓库
68 0
|
3天前
|
Java Maven
SpringBoot项目的用maven插件打包报Test错误
SpringBoot项目的用maven插件打包报Test错误
|
4天前
|
Java Apache Maven
Maven 项目文档
在 `C:/MVN` 目录下创建 Maven 项目 `consumerBanking` 使用命令:`mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false`。为解决 `mvn site` 命令执行时的 `NoClassDefFoundError`
|
1天前
|
Java Apache Maven
Maven 项目文档
在C:/MVN下,使用命令`mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false`创建Maven Java项目。确保`pom.xml`包含`maven-site-plugin`和`maven-project-info-reports-plugin`配置,版本分别至少为3.3和2.7,以避免`NoClassDefFoundError`。

热门文章

最新文章

推荐镜像

更多
http://www.vxiaotou.com