当前位置: 首页 > 工具软件 > JCenter > 使用案例 >

jcenter 到 maven

穆丁雨
2023-12-01

一、前言

以前Android的很多依赖库都是通过jcenter()进行依赖的。但是现在要迁移到mavenCentral()上面。而且等gradle8.0后就没有办法使用了。那么对于一些正在使用的仓库该如何迁移呢

二、三种情况

这里分三种情况来处理,一种是Android本身的库,一种是第三方的库,一种是没有迁移的仓库
(因为迁移了,所以可能依赖名字不能完全一样,所以可以通过关键的单词进行查找)

1、Android官方依赖库

可以在以下网址进行查询,而且还有部分Google的依赖库
https://maven.google.com/web/index.html

2、第三方依赖库

可以通过以下网址进行查询
https://search.maven.org/

3、没有迁移的库

还有一种库是没有迁移的。但是新版的gradle又不让使用了,这里有两种解决方式。

a、直接依赖源码、aar、jar、或者将代码自己找个仓库存起来

b、依赖别人的代理仓库,比如阿里的仓库

这里是阿里的代理仓库地址:
https://developer.aliyun.com/mvn/guide

三、依赖库中包含了没有迁移的仓库

有这么一种情况,假如有一个依赖库使用的是发布在jcenter()上面的版本。我们又不能直接替换,那么需要采取以下这种方式将旧版本屏蔽掉,然后自己再添加新的版本

dependencies {
	implementation 'com.google.android.flexbox:flexbox:3.0.0'
}

configurations {
//这个通过锁定group 和 module 将该依赖全部移除
// 第1中方式
 all*.exclude group: 'com.google.android', module: 'flexbox'
//    或者粗暴点,就没有上面的坑了
// 第2中方式,将包含 该module的依赖全部移除
    all*.exclude module: 'flexbox'
}
//下面强制整个项目全部使用该版本的依赖
configurations.all {
     resolutionStrategy {
         force "com.google.android.flexbox:flexbox:3.0.0"
       }
 }

这里的方式可以参考以下链接:
https://blog.csdn.net/Mr_Tony/article/details/108776208

注意: 该迁移的前提是包名、类名这些没有变化,否则依然会有问题。如果是包名、类名变化这些问题可以通过编写gradle插件的方式在代码编译期间对其进行更改

 类似资料: