我正在尝试缓存私有Travis CI存储库的依赖关系,Travis是否有一些特定于gradle的机制,或者我是否必须缓存特定目录?
.travis.yml:
language: groovy
jdk:
- openjdk7
env:
- TERM=dumb
before_install:
- cd application
- chmod +x gradlew
script:
- ./gradlew build
上次工作版本的相关部分:
Downloading https://services.gradle.org/distributions/gradle-2.1-bin.zip
......................................................................................................................................................................................
Unzipping /home/travis/.gradle/wrapper/dists/gradle-2.1-bin/2pk0g2l49n2sbne636fhtlet6a/gradle-2.1-bin.zip to /home/travis/.gradle/wrapper/dists/gradle-2.1-bin/2pk0g2l49n2sbne636fhtlet6a
Set executable permissions for: /home/travis/.gradle/wrapper/dists/gradle-2.1-bin/2pk0g2l49n2sbne636fhtlet6a/gradle-2.1/bin/gradle
Download https://jcenter.bintray.com/com/mycila/xmltool/xmltool/3.3/xmltool-3.3.pom
...
会添加:
cache:
directories:
- $HOME/.gradle
工作?或许:
cache:
directories:
- $HOME/.gradle/caches/modules-2/files-2.1
答案 0 :(得分:16)
将此添加到您的.travis.yml
:
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
在https://docs.travis-ci.com/user/languages/java/#projects-using-gradle
的Travis文档中有记录答案 1 :(得分:6)
您必须至少缓存~/.gradle/wrapper
和~/.gradle/caches
,但我可能会从~/.gradle
开始。 (如有必要,可以通过设置GRADLE_USER_HOME
环境变量来更改后者的位置)。升级到较新的Gradle版本时,缓存结构可能会发生变化,因此有时可能会使缓存无效。
PS:请不要在这里和Gradle论坛上双重发帖(或者没问题)。
答案 2 :(得分:6)
您可能应该将sudo: false
添加到.travis.yml
,因为缓存不适用于公共存储库。它会阻止您使用sudo
,setid
,setgid
,但它允许使用缓存机制!
但是我发现缓存$HOME/.gradle/caches
不是一个非常好的变体,因为每次构建都会更改文件$HOME/.gradle/caches/modules-2/modules-2.lock
,因此Travis每次都会重新打包缓存,并完全上传该缓存。对我而言,这比下载所有依赖项要慢。所以也许更好地指定除$HOME/.gradle/caches
之外的其他内容。
答案 3 :(得分:3)
我刚刚添加了以下文件夹:
- $HOME/.gradle/wrapper
- $HOME/.gradle/native
- $HOME/.gradle/daemon
- $HOME/.gradle/caches/jars-1
- $HOME/.gradle/caches/2.3
添加.gradle / caches将在每次构建时创建一个新的缓存文件。 不要忘记将2.3更改为您的gradle版本。
答案 4 :(得分:2)
您只需将以下行添加到.travis.yml:
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
您可以获取更多信息here。
答案 5 :(得分:1)
从版本3.5.1
开始,最简单有效的方法是只缓存caches/modules-2
和caches/wrapper
目录。缓存整个caches
目录会添加太多文件,导致更大的延迟。您仍然需要删除modules-2.lock
文件。
before_cache:
- rm -rf $HOME/.gradle/caches/modules-2/modules-2.lock
cache:
- $HOME/.gradle/caches/modules-2
- $HOME/.gradle/wrapper/