查看原文
其他

Jcenter服务即将关闭,改用mavenCentral,Google已弃用并终止Jcenter!

Bgwan 技术最TOP 2022-08-26

作者:Bgwan,链接:https://zhuanlan.zhihu.com/p/363156372

写在前面

是这样的,昨晚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 工件库) jcenter是一个免费托管java,kotlin库的仓库

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

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

然后我又看了【链接3】Android开发者Google官方消息https://developer.android.com/studio/build/jcenter-migration

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官网公告时间线】:

https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/#

也就是说到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网站将被禁用(客户端请求仍然有效)。

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

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

解决方法

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

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

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

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

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

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

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

(2)http://jitpack.io的替代方案

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

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

android Studio如何发布AAR至Bintray或者jitpack?

https://zhuanlan.zhihu.com/p/22351830

(3)maven central的替代方案

maven官网:

https://link.zhihu.com/?target=https%3A//maven.apache.org/

https://search.maven.org

(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了


---END---


西哥好友位开放,还没有加西哥好友的,可以扫下面二维码加个好友,有职场、技术相关问题,随时咨询


推荐阅读:
突发!阿里巴巴因“二选一”垄断被罚 182.28 亿!阿里回应:诚恳接受,坚决服从
Kotlin + buildSrc:更好的管理Gadle依赖!
一起来看看 Android 官推 kotlin-first 的图片加载库
面试官:String长度有限制吗?是多少?
收藏了!关于Android架构,你是否还在生搬硬套?
十六年全栈开发者的Android开发踩坑实录
用 VS Code 直接浏览 GitHub 代码
迁移被废弃的Kotlin Android Extensions插件!


更文不易,点个“在看”支持一下👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存