0%

三方库迁移至私有仓库

背景

​ 项目拉取一些依赖库需要连指定仓库并且还要连vpn,而有时候vpn又不稳定,导致开发变的异常繁琐。因此想要把本地缓存过的依赖库迁移到私有仓库。

​ 需要用到migrate-local-repo-tool.jar工具,它可以直接将本地maven仓库中的依赖库直接上传到远程仓库(或者符合本地仓库库目录结构样式的其他目录)。

​ 但是比如三方库我们本地仓库中并没有,只存在gradle的缓存目录中,这时就需要将gradle目录中的三方库格式化输出到一个目录中。

需要解决的问题:

  • 依赖库缓存在哪里
  • 如何格式化输出
  • 如何上传

依赖库缓存

​ 依赖库的缓存目录在用户目录下的.gradle/caches目录,但是要找到库的目录就比较困难因为目录太多了,可以用反向查找的方式,在Android Studio中的依赖库列表External Libraries中找到依赖库jar包右键在文件夹中打开就可以找到了

格式化输出

​ 为什么需要格式化输出,因为我们可以发现gradle缓存目录中的库目录结构是groupId作为目录名,而本地.m2仓库中目录结构是groupId分割以后每一段都是一级目录,举例:

com.tyt.goods:dialog:1.0.0

gradle缓存路径:
/Users/hezd/.gradle/caches/modules-2/files-2.1/com.tyt.goods/dialog/1.0.0/f86e207d698686ec58e48613c1f4f2c6e6e67283/dialog-1.0.0.aar
-->
com.tyt.goods/dialog/1.0.0/f86e207d698686ec58e48613c1f4f2c6e6e67283/dialog-1.0.0.aar

本地仓库路径:
/Users/hezd/.m2/repository/com/tyt/goods/dialog/1.0.0/dialog-1.0.0.aar
-->
com/tyt/goods/dialog/1.0.0/dialog-1.0.0.aar

因此gradle缓存目录中库目录结构需要格式化为本地仓库中的格式

为了避免误操作污染gradle缓存目录中的依赖库,可以将需要格式化输出的库拷贝到其他目录在做操作

我是用了python脚本来处理格式化输出的

脚本获取地址:migrate-local-repo 

仓库上传

格式化输出到目录后就要开始上传,例如格式化输出到temp/release目录下,migrate-local-repo上传命令

java -jar migrate-local-repo-tool.jar -cd "temp/release" -t "你的仓库地址" -u 你的用户名 -p 你的密码

注:上面命令中的参数需要根据自己环境做调整,不能无脑复制:smile:

如果terminal出现部署成功的日志说明上传成功,如

Sucessful Deployments:
com.mb.gradle.plugin:app-opt:jar:1.1.1-REMOVE-MODULE-INFO-3-SNAPSHOT
com.mb.gradle.plugin:app-opt:jar:sources:1.1.1-REMOVE-MODULE-INFO-3-SNAPSHOT
com.mb.gradle.plugin:app-opt:pom:1.1.1-REMOVE-MODULE-INFO-3-SNAPSHOT

至此,将gradle缓存中依赖库迁移至远程私有仓库完成了!