首发于Android开发
Jcenter服务即将关闭,改用mavenCentral

Jcenter服务即将关闭,改用mavenCentral

背景图片来源:jfrog关于bintray的更新

写在前面

是这样的,昨晚livery1.2.1升级完成,使用的时候出现这样的错误

Please remove usages of `jcenter()` Maven repository from your build scripts and migrate your build to other Maven repositories.
This repository is deprecated and it will be shut down in the future.
See http://developer.android.com/r/tools/jcenter-end-of-service for more information.
Currently detected usages in: Gradle Settings
Remove JCenter from repositories

很久没有登录jfrog bintray,上了一下,【链接1】在bintray官网看到jfrog的公告

图1:bintray jfog官网Livery截图

发现jcenter服务即将停止,需要迁移项目库(比如mavenCentral),这意味着几乎所有使用了jcenter的项目将要面临失败构建(包含Android开发中build.gradle 和其它开源的二进制依赖)

repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }

说明:

JFrog是一家公司(他维护着很多Android,Java项目的工件库)
jcenter是这家公司的一个免费托管java,kotlin的仓库


其实看到的信息jfrog在2021年2月28日不再接受GoCenter和ChartCenter的提交 GoCenter和ChartCenter网站将被禁用(客户端请求仍然有效),可是昨晚2021年4月7日在Jcenter中还是可以发布成功,但是却引用不了最新,那我推测jcenter中依然可以提交成功,只是提交以后去下载的时候,这里打开【链接2Livery1.2.1】404.That’s an error,自然就构建失败了

还原回livery1.2.0版本没有影响(1.2.0发布的时间是年前),可以构建成功,说明当前时间点,以前的版本还是可以用的

然后我又看了【链接3】Android开发者Google官方消息,Google在3月1日已经警告开发者移除Jcenter(),并且针对Google自己的开源库,在Android Studio 4.2 Google已经把Maven Central 作为gradle的默认配置了(我还特意更新了一下,以前是jcenter),kotlin的所有库也立马转移到maven central

jcenter() // Warning: this repository is going to shut down soon
图2:来自google的警告截图

反正结论就是:

jcenter跑路了,5月1日停止服务并逐步删除所有二进制

时间线与影响

【链接1:jfrog官网公告时间线】 也就是说到2022年2月1日JCenter便不再可用了

图3:jfrog公告bintray关闭时间线
2021年2月28日不再接受GoCenter和ChartCenter的提交GoCenter和ChartCenter网站将被禁用(客户端请求仍然有效)。
2021年3月31日JCenter将不再接受更多的提交。
2021年4月12日,26日我们将有一些短期服务暂停,以提醒用户的服务,将在5月1日。(具体时间将在Bin-y Status页面上公布。)
2021年5月1日Bin-y服务将不再提供。GoCenter和ChartCenter服务将不再适用于非艺术性客户.(ConanCenter不受影响)。
2022年2月1日JCenter将不再适用于非艺术性客户。

GoCenter和ChartCenter网站将被禁用(客户端请求仍然有效)。

  • 2021年3月31日JCenter将不再接受更多的提交。
  • 2021年4月12日,26日我们将有一些短期服务暂停,以提醒用户的服务,将在5月1日。(具体时间将在Bintray Status页面上公布。)
  • 2021年5月1日Bintray服务将不再提供。GoCenter和ChartCenter服务将不再适用于非艺术性客户.(ConanCenter不受影响)。
  • 2022年2月1日JCenter将不再适用于非艺术性客户。

项目构建可能会受到以下几种方式的关闭影响:

  • Gradle可能无法下载用于编译,测试或运行代码的依赖项。
  • Gradle可能无法下载插件用来配置构建的依赖项。
  • Gradle可能不再能够将您的软件包发布到Bintray。

解决方法

jcenter跑路了,Google也改用mavenCentral,意味着我又要花时间折腾了,吐一下:

感觉jfrog这做法挺坑爹,而且邮件都没有给我发,我看到其它同学的是有收到邮件的,难道还区别对待,导致近一个月的时间我都不知道这件事情,回过神来,才知道大清都亡了,jcenter竟然跑路了

下面的替代方法可以参考:

(1)jfrog官方提供的解决方案:

图4:jfrog官方提供的解决方案

点进去,需要二选一(中国,美国),再点进去

图5:jfrog中国区域,快速发布全语言二进制

看到这儿,“免费试用”,怎么感觉不对,大家懂了吧,为啥jfrog突然跑路bintray,不再维护center library了,你说要钱,那下次我进到bintray官网,你让我扫个二维码付款我也是愿意的,但是你别这样搞,一套本来完整的东西,我还要再花时间去折腾,气人

(2)jitpack.io的替代方案

这个方案在livery1.0.0中我曾经使用过这个方案,但是在后期的Android Studo升级过程中,Google默认了jcenter仓库,所以后面所有的开源库我都采用了Bintrary,因为这样方便,但是现在由于Bintray不再维护,所以本人决定在2022年2月1之前,(提前:2021年04月12日已完成)完成livery1.2.1以后版本的迁移工作,因为jfrog在2022年2月1日即停用jcenter

jitpack.io的替代方法可以参考我的这篇内容

(3)maven central的替代方案

maven官网 或者同样参考我的这篇内容(已更新)

Maven Central Repository Search

(4)自建Nexus或maven central

因为之前在华为方待的时候,内部是通过:自建的Nexus或maven central,我们引用的关系,大概差不多是这样子:可以参考【链接5-推荐】自建库的方法

allprojects {
    repositories {
        jcenter()
        maven {
             url "http://120.69.199.196:8080/nexus/content/repositories/releases/"
        }
    }
}

然后具体到库:

implementation 'com.cooloongwu.hello:hello.native:1.0.3'

(5)如果是Android项目可以直接下载AAR,或者jar

一般来说在jcenter中的库,(在截至2022年2月1日前)都是可以直接下载下来的,比如Livery1.2.1,你可以在bintray下载,也可以通过Livery帮助文档 下载通过libs库引用


以上就是解决方案和一些感想吧:一般个人或组织:推荐jitpack;如果是大一点的公司就可以自建Nexus或maven central,jfrog的方法由于变了味道,我找他们的客服问了一下,就只回了我一句,公司是要逐渐停止维护bintray了


请尊重劳动成果,注意文中版权声明Android专栏不定时更新,欢迎点击关注我知乎。也可以同时关注人工智能专栏文艺语录专栏,本内容作者sunst0069,技术上有问题请沟通qyddai@gmail.com

作者:sunst发布于: 2021-04-08 13:56 && 修改于:2021-04-14 10:48
编辑于 2021-04-14 10:49