鉴于我有多个构建基于Gradle 5.X的应用程序的代理,我想开始在所有代理之间缓存Gradle依赖项。
我尝试共享.gradle
文件夹,但是当我尝试在2个代理上运行相同的构建时,其中一个失败:
Caused by: org.gradle.api.UncheckedIOException:
Failed to create parent directory '/home/buildagent/.gradle/caches/5.0'
when creating directory '/home/buildagent/.gradle/caches/5.0/generated-gradle-jars'
我如何在Teamcity代理之间共享依赖关系?
是否有一个通用的解决方案可以支持Gradle 5以上?
我在Gradle 6.x documentation中找到了这个,但是在5.x
文档中没有找到任何东西。
我无法说出您得到的异常的根本原因是什么,因为该消息非常稀疏。我只能说,对于Gradle 5,没有内置解决方案可以通过网络共享本地缓存。您提到的copy and reuse the cache功能已在Gradle 6.1中引入,并有一些限制:
$GRADLE_HOME/caches/modules-<version>
)>>那么,什么是适用于Gradle 5和6的便携式解决方案?根据最初介绍高速缓存可重用性的凭证(Make dependency caches relocateable #1338):
编写一个Gradle任务,该任务根据依赖关系创建文件存储库,并将该文件存储库打包。然后在您的构建中添加逻辑,说明“如果存在该文件存储库,请使用它”。
(来自this comment)