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?
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?
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.
Replace
jcenter()
with this:
mavenCentral()
jcenter()
with mavenCentral()
will do no good. –
Erwin maven {url 'https://my.library-url.com/'}
–
Shoebill 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.
Thejcenter()
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.
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.
Replace jcenter()
by:
gradlePluginPortal()
mavenCentral()
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/'
}
}
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.
As of 2022-02-01 JCenter is definitely down
- no, it's not. –
Winstonwinstonn maven { url = uri("https://jcenter.bintray.com") }
–
Winstonwinstonn In my case i have followed these steps to get it done :
For those still looking for an answer, I found the repository setting needed to be at the top of build script or the change didn't get picked up.
buildscript {
repositories {
mavenCentral()
}
}
This works for me.
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/' }
}
Nothing works anymore. We can use aliyun.com for the time being.
Use it like this in the top level build.gradle
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/apache-snapshots' }
}
dependencies {
***
}
}
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/apache-snapshots' }
}
}
In my case 2024, I didn't seen the "jcenter()" on the "build.gradle" and the problem still shown ... So first thing I had RUN:
E:\FlutterProjects\project_name\android> ./gradlew build --warning-mode all
> Configure project :modal_progress_hud_nsn
The RepositoryHandler.jcenter() method has been deprecated. This is scheduled to be removed in Gradle 8.0. JFrog announced JCenter's sunset in February 2021. Use mavenCentral() instead. Consult the upgrading guide for further information: https://docs.gradle.org/7.4/userguide/upgrading_version_6.html#jcenter_deprecation
at build_1uqqsrqg2umy8x9ryoqs90h6c$_run_closure1$_closure2.doCall(C:\Users\ADMIN\AppData\Local\Pub\Cache\hosted\pub.dev\modal_progress_hud_nsn-0.1.0-nullsafety-1\android\build.gradle:8)
(Run with --stacktrace to get the full stack trace of this deprecation warning.)
WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 33
This Android Gradle plugin (7.2.1) was tested up to compileSdk = 32
This warning can be suppressed by adding
android.suppressUnsupportedCompileSdk=33
to this project's gradle.properties
The build will continue, but you are strongly encouraged to update your project to
use a newer Android Gradle Plugin that has been tested with compileSdk = 33
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':flutter_plugin_android_lifecycle:test'.
> Could not create task ':flutter_plugin_android_lifecycle:testDebugUnitTest'.
> this and base files have different roots: E:\FlutterProjects\project_name\build\flutter_plugin_android_lifecycle and C:\Users\ADMIN\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_plugin_android_lifecycle-2.0.6\android.
Now solving the problem:
Change dependency version "modal_progress_hud_nsn" from modal_progress_hud_nsn: ^0.1.0-nullsafety-1
to modal_progress_hud_nsn: ^0.4.0
Or higher.
Add android.suppressUnsupportedCompileSdk=33
to "android/gradle.properties"
Now the problem is:
PS E:\FlutterProjects\project_name\android> ./gradlew build --warning-mode all
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':flutter_plugin_android_lifecycle:test'.
> Could not create task ':flutter_plugin_android_lifecycle:testDebugUnitTest'.
> this and base files have different roots: E:\FlutterProjects\project_name\build\flutter_plugin_android_lifecycle and C:\Users\ADMIN\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_plugin_android_lifecycle-2.0.6\android.
We recommend using a newer Android Gradle plugin to use compileSdk = 33
Could not create task ... this and base files have different roots
© 2022 - 2024 — McMap. All rights reserved.