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文件中,需做如下修改文件结构转换
这一步直接使用脚本转换,参考
这里
,但是在使用过程中发现这位老哥的脚本对于目录转换有一些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