JCenter被废弃;对Gradle和安卓的影响
我应该担心JCenter被弃用吗?
为什么要将我的库从JCenter迁移到其他Maven仓库?
我可以继续在我的Gradle构建脚本中使用jcenter()
吗?
替换
jcenter()
与此有关。
mavenCentral()
jcenter()
替换成mavenCentral()
不会有任何作用。
- Mahozad 2021-05-11
maven {url 'https://my.library-url.com/'}
- cmak 2022-01-20
请看新的答案。
摘要:2022年2月1日之后,jcenter()
将不再起作用。
根据这篇Gradle博客文章。
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.
而根据安卓开发者的说法。
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.
因此,只需确保作者在其他仓库中提供他们的库,然后更新你的构建脚本,以便能够从这些仓库中下载。
例如,在Gradle中使用mavenCentral()
函数,可以从Maven Central仓库中获取依赖项。
JFrog网站中提到的这里的最新更新是:。
4/27/2021更新。我们听取了社区的意见,并将JCenter无限期地保持为只读资源库。我们的客户和社区可以继续依靠JCenter作为Java包的可靠镜像。
将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-02-01,JCenter肯定已经倒下了。
在我的案例中,我已经按照这些步骤完成了它。
- 将mavenCentral()置于jcenter()之前。
- 使用Android Studio升级助手升级gradle(在我的例子中,升级到了7.0.3)。
- 通过插件(Android Studio)安装NDK(Side by Side)。
- Clean &重建项目
我什么都试过了,但都不奏效,后来用手添加了一个新的maven仓库,现在就可以用了。
repositories {
// ...
maven { url 'https://repo.gradle.org/gradle/libs-releases/' }
}
现在什么都不能用了。我们可以暂时使用aliyun.com。
在顶层的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' }
}
}
对于那些仍在寻找答案的人来说,我发现版本库的设置需要在构建脚本的顶部,否则变化不会被接受。
buildscript {
repositories {
mavenCentral()
}
}
这对我来说是有效的。