gradle缓存库转成maven

简书地址:https://www.jianshu.com/p/050dd9fc2438

gradle缓存库转成maven一般有以下情况:

  • 在将用gradle管理的代码上库时,由于CI库上的项目编译需要本地化,且只支持maven的依赖缓存的文件结构。会出现gradle找不到包,无法编译的情况。
  • maven的依赖库中有许多第三方的依赖包,用gradle直接查找maven库,免去单独设置代理的繁琐。
maven和gradle的依赖包文件结构

首先看下gradle和maven的依赖包的存放结构,以guava-18.0.jar为例
maven:~/.m2/respository/com/google/guava/guava/18.0/guava-18.0.jar
gradke:~/.gradle/cache/modules-2/files-2.1/com.google.guava/guava/18.0/cce0823396aa693798f8882e64213b1772032b09/guava-18.0.jar
gradle的缓存目录多了一个随机值,并且目录层次与maven不同。在编译时,如果发现报错信息中显示查找jar包的路径没有cce0823396aa693798f8882e64213b1772032b09这个随机值,那么就需要将gradle的依赖jar包maven化。

依赖查找设置

在gradle项目的build.gradle文件中,需做如下修改image.png
除此之外,还有image.png
总而言之,就是将所有需要连接中心仓的设置全部本地化。如果设置后编译还是显示联网下载了,可以追一下build.gradle中apply的其他gradle文件,设置是一样的。

文件结构转换

这一步直接使用脚本转换,参考这里,但是在使用过程中发现这位老哥的脚本对于目录转换有一些BUG,自己修改了一下,放在了我的github上。
注:出于懒惰,我修改后没考虑边界条件,当files-2.1目录下的文件夹目录深度小于两层时会报错,正常使用的话files-2.1目录下只能有依赖的第三方库和这个脚本文件,直接执行这个脚本文件python transform.py生成的结果在当前目录的out目录下。
在files-2.1目录下使用cp -r out/* ~/.m2/repository/命令即可合并。

补充
本地与库上下载的jar包版本不同?

由于linux,gradle,maven,java等版本不同或者环境不同,会导致不同机器上对于gradle依赖包下载的版本不同,如自己的机器上本地下载了1.0版本,库上查找的是1.0.SNAPSHOT版本。这种情况是由于gradle没有指定版本,一般是一个半开半闭的区间,如[0.5,2.0)。出现这种问题直接指定版本即可。

代理设置?

maven直接在~/.m2/setting.xml文件中设置,将xxxxx依次替代为用户名,密码和ip
image.png
同时还要设置阿里云镜像
image.png
gradle在~/.gradle/目录下新建一个gradle.properties文件,设置内容为image.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值