如何告诉 Gradle 在持续集成模板系统中重用依赖项?

Posted

技术标签:

【中文标题】如何告诉 Gradle 在持续集成模板系统中重用依赖项?【英文标题】:How to tell Gradle to reuse dependencies in a Continuous Integration template system? 【发布时间】:2018-06-06 04:27:35 【问题描述】:

我们有一个项目模板,经过清理,无需编译,只需要 5mb 的磁盘空间。在我们的持续集成系统上,为我们的每个项目复制模板,之后,它被一个脚本更改,该脚本使用每个项目的代码和项目属性差异准备模板。一旦准备好,它就会被编译。

我们所有的项目都有相同的依赖关系。每次复制模板并准备成为不同的项目时,都会再次下载相同的依赖项。今天,我们遇到了一个非常罕见和危险的问题。由于 Gradle 无法下载依赖项,我们所有的编译都开始失败:

> Could not resolve com.github.mobfox:MobFox-android-SDK-Core:3.2.4.
> Could not get resource 'https://jitpack.io/com/github/mobfox/MobFox-Android-SDK-Core/3.2.4/MobFox-Android-SDK-Core-3.2.4.pom'.
> Could not GET 'https://jitpack.io/com/github/mobfox/MobFox-Android-SDK-Core/3.2.4/MobFox-Android-SDK-Core-3.2.4.pom'.
> Read timed out

因此,我需要知道如何才能最终实现 Gradle 只下载一次所有依赖项,而不是每次我复制模板并准备将其作为另一个项目时。当我将模板复制到一个新文件夹并重命名应用程序和其他一些项目时,Gradle 正在 Gradle 缓存目录上为其创建一个新的缓存文件夹。有没有办法告诉 Gradle 每次编译应用程序时应该存储和搜索 Gradle 依赖项的确切目录路径?

【问题讨论】:

【参考方案1】:

您可能可以将 --offline 与您可能用于在 CI/CD 上构建 apk 的 gradlew 命令一起使用

这里是详细信息。

Gradle 在避免重新下载工件方面做得很好,但您可以将 --offline 传递给 Grade 以防止在构建期间访问网络。如果它需要网络中没有的东西,而不是尝试获取它,您的构建将失败。

【讨论】:

以上是关于如何告诉 Gradle 在持续集成模板系统中重用依赖项?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Jenkins,Git和Gradle的持续集成环境中处理用户名/密码? [关闭]

text 弹簧靴的Gradle模板。展示如何使用集成测试

使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置

移动端持续集成(Jenkins+Gradle+fir.im)

Android+git+hudson+gradle持续集成

持续集成工具对比