gradlle项目离线依赖配置

背景

本文档主要针对离线状态下,导入gradle项目。实际能用的情况是必需要先要有一个配置好环境的gradle项目源码,相关的gradle配置,以及完整的依赖包。经过几天的百度和文档查看,以及不懈的努力,总算弄出来一些成果。此前并未了解过gradle,现在也只是有浅显的理解。如果有哪里写的不对,或者理解错误的地方,欢迎指出。
为简化说明,简称配置好的gradle项目为 gradleDone ,要配置的gradle项目为gradleDoing

原理及思路

经过多次尝试,发现离线状态下,gradle无法找到我配置的本地仓库。不管是配置本地仓库,还是导入时offline模式。

比方我本地仓库地址为:

D: \gradle-repository\repo-A

实际jar包存放地址是:

D:\gradle-repository\repo-A\caches\modules-2\files-2.1\oss\oss-parent\4.1\log4j-bom-2.11.2.jar

它找的地址是:
D: \gradle-repository\repo-A                           \oss\oss-parent\4.1\log4j-bom-2.11.2.jar   

从上面可以看出,gradle 解析jar包路径时,没有包括 caches\modules-2\files-2.1(gradle本地仓库默认建立的目录) 这层。它实际是 本地仓库+\组织名+\模块名+\版本号+\jar包名 来查找的jar包。
于是我想要知道是否可以通过手工配置的方式,告诉gradle如何查找我存放的本地jar包。无奈查询很久没有相关信息(详细说明gradle是如何找到jar位置的)。
后来想到,已配置好的项目应该在某个地方存储好了依赖jar包的位置信息。通过合理判断得知,这个jar包位置信息最有可能是维护在具体的项目路径下。
下面是我猜测的结果:
gradlle项目离线依赖配置_第1张图片
可以看出位置信息大致保存在如图位置,同时知道这个和gradle版本号相关,所以迁移时,最好使用“配置好的gradle项目”的gradle版本。
至此,“头”已经开了。当然期间省略了很多尝试的内容,这个不是重点。下面来看实际的操作。

迁移准备工作

第一步:材料准备

文件都是从一个环境配置好的项目的中copy过来的,这个可以让配好环境的人发给你,材料如图下:
gradlle项目离线依赖配置_第2张图片
第二步:copy gradleDone的本地仓库到本机
提供用cmd创建多层目录的命令:
cd /d d: //切到d盘
Md\Develop\gradleRep\2019070304 //创建多层目录。
创建与gradleDone 相同的本地仓库目录:D:\Develop\gradleRep\2019070304
gradlle项目离线依赖配置_第3张图片

创建好后,copy “gradleDone”的本地仓库到本机:
gradlle项目离线依赖配置_第4张图片
第三步:配置和安装gradle
Gradle的版本要和 gradleDone项目一致:
gradlle项目离线依赖配置_第5张图片

如果有配置GRADLE_USER_HOME(gradle本地仓库)。最好也配置为: D:\Develop\gradleRep\2019070304(与“gradleDone”本地仓库目录相同)

第四步:配置eclipse中的gradle
gradlle项目离线依赖配置_第6张图片

开始导入离线gradle

第一步:以gradle project方式导入
gradlle项目离线依赖配置_第7张图片

第二步:配置本地仓库,gradle安装目录,以及离线模式
gradlle项目离线依赖配置_第8张图片

第三步:错误Could not fetch model of type ‘GradleBuild’ using Gradle installation
gradlle项目离线依赖配置_第9张图片
点击finish之后,可能会出现下面的错误。

第四步:解决Could not fetch model of type ‘GradleBuild’ using Gradle installation
这里我也没有找到具体是什么原因造成的。但是可以通过点击back ,取消离线模式,在点击finish,期间会下载一下东西(与项目依赖应该没有关系,毕竟远程仓库已关闭)。下载完成后如图:
gradlle项目离线依赖配置_第10张图片
第五步:删除tf-parent,重新引入,再次以离线模式导入
这时候的tf-parent 项目已经改动了(可能改动了jar包的位置信息),所以要删除掉,重新复制一份新的 tf-parent 进来:
gradlle项目离线依赖配置_第11张图片
gradlle项目离线依赖配置_第12张图片

这时再次以离线的方式导入,这次不会出现:“ Could not fetch model of type ‘GradleBuild’ using Gradle installation“。导入成功后如图,已成依赖了本地仓库:
gradlle项目离线依赖配置_第13张图片

第六步:第五步失败,看这里
如果在第5步仍未成功,请注意是否同时安装了maven。因为gradle在离线状态下会优先找maven本地仓库的。
gradlle项目离线依赖配置_第14张图片

所以此时要去修改maven本地仓库的地址:

gradlle项目离线依赖配置_第15张图片

配置好后,删除工程,重新导入,即可。

补充说明
此方法已在至少两台电脑上测试通过。必须说明的是,方法使用条件限制较多,且其中仍有可优化和补充说明的部分。比如“开始导入离线gradle”的第三步,仍需要通过在线的方式解决“Could not fetch model of type ‘GradleBuild’ using Gradle installation”问题。并不是真正意义上的离线安装。

2019-7-31 第三步的错误可以通过copy 工作空间的方式来解决,只不过这样要求大家使用同一个eclipse。copy工作空间的话,就可以实现真正意义的离线配置。

你可能感兴趣的:(maven)