将gradle缓存复制到脱机系统时出现问题

将gradle缓存复制到脱机系统时出现问题,gradle,gradlew,Gradle,Gradlew,我有一台笔记本电脑,其中我正在使用包装器gradlew运行一个Gradle项目。此项目的依赖项只能从我们组织的网络下载。 我的测试团队希望在我们的组织网络之外测试项目,因此我无法下载依赖项。因此,我已将整个“.gradle”文件夹从我机器的C:\\Users\\MyUserName复制到另一个系统的C:\\Users\\Admin。然后我运行,gradlew--offline。但是我得到一个错误,说明缓存没有找到,尽管jar存在于“.gradle”目录中。有什么我遗漏的吗?gradle缓存文件夹

我有一台笔记本电脑,其中我正在使用包装器
gradlew
运行一个Gradle项目。此项目的依赖项只能从我们组织的网络下载。
我的测试团队希望在我们的组织网络之外测试项目,因此我无法下载依赖项。因此,我已将整个“.gradle”文件夹从我机器的
C:\\Users\\MyUserName
复制到另一个系统的
C:\\Users\\Admin
。然后我运行,
gradlew--offline
。但是我得到一个错误,说明缓存没有找到,尽管jar存在于“.gradle”目录中。有什么我遗漏的吗?

gradle缓存文件夹不应该复制到不同的目录,因为其中存储的某些路径被绝对路径引用。您需要至少从gradle user home C://Users/Admin运行构建,以便稍后使用--offline在脱机系统上运行它

我会使用专用文件夹(如
C:/gradle cache
)并将
gradle\u USER\u HOME
设置为指向该目录,或者使用gradle中的
-g
选项指定gradle cache文件夹

目前Gradle中存在一个bug,它阻止包装器尊重
-g
选项()。因此,在使用包装器时,可能应该使用
GRADLE\u USER\u HOME
环境变量


然后在您的目标系统上,您再次将缓存复制到
C:/gradle cache
,并设置
gradle\u USER\u HOME
,您的脱机构建应该可以工作。

如果测试团队“在我们的组织网络之外”,那么最好将其交付,而不是完整的构建,但结果与所有依赖项捆绑在一起。我使用您的方法在我的windows PC之间复制整个gradle用户主页。它工作得很好——我怀疑gradle再次下载了项目依赖项——无论如何,这个技巧绕过了下载的包装分发和其他庞大的网络操作。我将整个gradle user home目录从windows驱动器复制到Ubuntu驱动器,并将gradle user home变量设置到该目录,令人惊讶的是,它居然能工作。我再次怀疑gradle下载项目依赖项——不管怎样,它绕过了包装分发下载和其他庞大的网络操作。目前,我有两个gradle用户主目录——一个在Ubuntu驱动器中,一个在windows驱动器中。在Ubuntu上工作时,两者都可以访问。我可以将windows驱动器上的gradle用户目录作为Ubuntu中的gradle缓存文件夹进行sym链接,还是直接作为Ubuntu gradle缓存文件夹使用我在两个操作系统中都使用Android studio。