JCenter 弃用;对 Gradle 和 Android 的影响

我应该担心 JCenter 被弃用吗?

为什么要将我的库从 JCenter 迁移到其他 Maven 存储库?

我可以在我的 Gradle 构建脚本中继续使用 jcenter() 吗?

stack overflow JCenter deprecation; impact on Gradle and Android
原文答案
author avatar

接受的答案

JFrog 网站中提到的 here 的最新更新如下:

2021 年 4 月 27 日更新:我们听取了社区的意见,并将 JCenter 无限期地保留为只读存储库。我们的客户和社区可以继续依赖 JCenter 作为 Java 包的可靠镜像。


答案:

作者头像

代替

jcenter()

有了这个:

mavenCentral()
作者头像

请参阅 the new answer


摘要:2022 年 2 月 1 日之后 jcenter() 将不再有效。

根据 this Gradle blog post

Gradle 7.0 将弃用 jcenter() 来解决依赖关系。
您仍然可以使用 JCenter 作为存储库,但 Gradle 会发出警告。
jcenter() 方法将在下一个主要版本中删除。

Gradle 与 JCenterMaven Central 没有内在联系,因此您可以随时切换到您选择的任何其他存储库。

根据 Android Developers

JFrog 是一家维护许多 Android 项目使用的 JCenter 工件存储库的公司,它最近宣布弃用 JCenter 并即将退役。
根据 the announcementJCenter 将允许在 2022 年 2 月 1 日之前下载现有工件。

JCenter 上发布工件的开发人员应该开始将包迁移到新主机,例如 [Maven Central](https://maven.apache.org/repository/index.html)

因此,只需确保作者在其他存储库中提供他们的库,然后更新您的构建脚本以启用从这些存储库下载。
例如,在 Gradle 中使用 mavenCentral() 函数来启用从 Maven 中央存储库获取依赖项。

作者头像

jcenter() 替换为:

gradlePluginPortal()
mavenCentral()
作者头像

你必须改变

jcenter()

mavenCentral()

此外,您必须设置一个或多个存储库 url:

repositories {
    mavenCentral()
    maven {
        url = "https://repo1.maven.org/maven2/"
    }
    maven {
        url "https://repo.spring.io/release"
    }
    maven {
        url "https://repository.jboss.org/maven2"
    }
    maven {
        url 'https://repo.jenkins-ci.org/public/'
    }
}
作者头像

实际上,开发人员应该将他们的库移植到 Maven 或 Google。在这种情况下,可以从 Gradle 中删除 jCenter()。

当不再维护旧库或开发人员退休时,就会出现问题。

只有两种可能:

a) 搜索,例如 Maven 中的类似库。

b) 从 GitHub 下载相应的源代码,并从中创建您自己的本地库。

截至 2022 年 2 月 1 日,JCenter 肯定已关闭。

作者头像

就我而言,我已按照以下步骤完成它:

  1. 将 mavenCentral() 放在 jcenter() 之前
    2.使用Android Studio升级助手升级gradle(在我的情况下升级到7.0.3)
    3.通过插件(Android Studio)安装NDK(Side by Side)
    4.清理和重建项目
作者头像

我尝试了一切,但没有任何效果,然后手动添加一个新的 Maven 存储库,现在它正在工作。

repositories {
 // ...
 maven { url 'https://repo.gradle.org/gradle/libs-releases/' }
}