JCenter deprecation; impact on Gradle and Android

JavaAndroidKotlinGradlebuild.gradle

Java Problem Overview


Should I be worried about JCenter being deprecated?

Why should I migrate my libraries from JCenter to other Maven repositories?

Can I continue to use jcenter() in my Gradle build script?

Java Solutions


Solution 1 - Java

Replace

jcenter()

with this:

mavenCentral()

Solution 2 - Java

Please see the new answer.

Summary: After February 1st, 2022 jcenter() will not work anymore.

According to this Gradle blog post:

> Gradle 7.0 will deprecate the use of jcenter() to resolve dependencies.
You will still be able to use JCenter as a repository, but Gradle will emit a warning.
The jcenter() method will be removed in the next major release. > > Gradle has no inherent tie to JCenter or Maven Central, so you can always switch to any other repository of your choice.

And according to Android Developers: > JFrog, the company that maintains the JCenter artifact repository used > by many Android projects, recently announced the deprecation and > upcoming retirement of JCenter.
> According to the announcement, JCenter will allow downloads of existing artifacts until February 1, 2022. > > Developers who publish artifacts on JCenter should start migrating packages > to a new host, such as Maven Central.

So, just make sure that the authors provide their library in other repositories and then update your build scripts to enable downloading from those repositories.
For example, in Gradle use mavenCentral() function to enable getting dependencies from Maven Central repository.

Solution 3 - Java

The latest update as mentioned here in JFrog's website is the following:

> UPDATE 4/27/2021: We listened to the community and will keep JCenter as a read-only repository indefinitely. Our customers and the community can continue to rely on JCenter as a reliable mirror for Java packages.

Solution 4 - Java

Replace jcenter() by:

gradlePluginPortal()
mavenCentral()

Solution 5 - Java

You have to change

jcenter()

with

mavenCentral()

moreover you have to set one or more repository urls:

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/'
    }
}

Solution 6 - Java

Actually, developers should port their libraries to Maven or Google. In this case, jCenter() can be removed from Gradle.

A problem occurs when old libraries are no longer maintained or the developers are retired.

There are only two possibilities:

a) search e.g. in Maven for a similar library.

b) Download the corresponding source code from GitHub and create your own local library from it.

As of 2022-02-01 JCenter is definitely down.

Solution 7 - Java

In my case i have followed these steps to get it done :

  1. Place mavenCentral() before jcenter()
  2. Upgrade gradle using Android Studio Upgrade Assistant (in my case upgraded to 7.0.3)
  3. Install NDK (Side by Side) through plugins (Android Studio)
  4. Clean & Rebuild project

Solution 8 - Java

I tried everything but nothing worked, then add a new maven repository by hand and now it's working.

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMahozadView Question on Stackoverflow
Solution 1 - JavaUmar AtaView Answer on Stackoverflow
Solution 2 - JavaMahozadView Answer on Stackoverflow
Solution 3 - JavaPericles KarachristosView Answer on Stackoverflow
Solution 4 - JavannhthuanView Answer on Stackoverflow
Solution 5 - JavaN3tMasterView Answer on Stackoverflow
Solution 6 - Javaguenter47View Answer on Stackoverflow
Solution 7 - JavaAyoub EL ABOUSSIView Answer on Stackoverflow
Solution 8 - JavaBobView Answer on Stackoverflow