gradle项目离线依赖配置

背景

本文档主要针对离线状态下,导入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包位置信息最有可能是维护在具体的项目路径下。
下面是我猜测的结果:
在这里插入图片描述
可以看出位置信息大致保存在如图位置,同时知道这个和gradle版本号相关,所以迁移时,最好使用“配置好的gradle项目”的gradle版本。
至此,“头”已经开了。当然期间省略了很多尝试的内容,这个不是重点。下面来看实际的操作。

迁移准备工作

第一步:材料准备

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

创建好后,copy “gradleDone”的本地仓库到本机:
在这里插入图片描述
第三步:配置和安装gradle
Gradle的版本要和 gradleDone项目一致:
在这里插入图片描述

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

第四步:配置eclipse中的gradle
在这里插入图片描述

开始导入离线gradle

第一步:以gradle project方式导入
在这里插入图片描述

第二步:配置本地仓库,gradle安装目录,以及离线模式
在这里插入图片描述

第三步:错误Could not fetch model of type ‘GradleBuild’ using Gradle installation
在这里插入图片描述
点击finish之后,可能会出现下面的错误。

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

这时再次以离线的方式导入,这次不会出现:“ Could not fetch model of type ‘GradleBuild’ using Gradle installation“。导入成功后如图,已成依赖了本地仓库:
在这里插入图片描述

第六步:第五步失败,看这里
如果在第5步仍未成功,请注意是否同时安装了maven。因为gradle在离线状态下会优先找maven本地仓库的。
在这里插入图片描述

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

在这里插入图片描述

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

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

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

Android Studio的Gradle离线配置是一种配置方式,可以使Android项目在没有网络连接的情况下执行构建和编译操作。通常情况下,Gradle会通过网络连接下载所需的依赖和插件,但在某些情况下,比如缺乏网络连接或者网络不稳定,这种在线下载就会受到限制。因此,使用离线配置可以解决这个问题。 要进行Gradle离线配置,首先需要在网络连接正常的情况下,在Android Studio中打开需要离线配置项目。然后,依次点击菜单栏中的"File"->"Settings"->"Build, Execution, Deployment"->"Gradle"。在弹出的对话框中,可以看到"Gradle offline work"选项。勾选该选项后,就可以进行离线配置了。 离线配置后,Gradle会尝试使用本地缓存来解决构建和编译所需的依赖和插件。如果本地缓存中缺少所需的文件,Gradle会抛出一个错误,因为它无法从网络上下载它们。因此,离线配置需要首先在有网络连接的情况下进行配置,并确保所有所需的依赖和插件都已经下载到本地缓存中。 另外,为了使离线配置生效,需要关闭Android Studio中的"Offline Mode"。该选项在工具栏中有一个小蜗牛的图标,可以点击该图标开启或关闭"Offline Mode"。 总的来说,通过Gradle离线配置,可以在没有网络连接的情况下顺利进行Android项目的构建和编译操作。通过合理配置依赖和插件的本地缓存,可以确保项目的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值