Gradle 缓存渐变依赖项,Travis CI
我正在尝试缓存私有Travis CI存储库的依赖项,Travis是否有特定于gradle的机制,或者我是否必须缓存特定的目录 .travis.yml:Gradle 缓存渐变依赖项,Travis CI,gradle,travis-ci,Gradle,Travis Ci,我正在尝试缓存私有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
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
...
上次工作构建的相关部分:
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
您必须至少缓存
~/.gradle/wrapper
和~/.gradle/caches
,但我可能从~/.gradle
开始。(如有必要,可通过设置GRADLE\u USER\u HOME
环境变量来更改后者的位置)。升级到较新的Gradle版本时,缓存结构可能会更改,因此不时使缓存无效可能是有意义的
PS:请不要在这里和Gradle论坛上重复发布(两者都可以)。可能您应该在
.travis.yml
中添加sudo:false
,因为缓存不适用于公共存储库。它将阻止您使用sudo
,setid
,setgid
,但它允许缓存机制
但我发现缓存
$HOME/.gradle/caches
不是一个很好的变体,因为文件$HOME/.gradle/caches/modules-2/modules-2.lock
在每次构建时都会更改,因此Travis每次都会重新打包缓存,并完全上传该缓存。这对我来说比下载所有依赖项都慢。因此,也许最好指定其他内容,而不是$HOME/.gradle/caches
我刚刚添加了以下文件夹:
- $HOME/.gradle/wrapper
- $HOME/.gradle/native
- $HOME/.gradle/daemon
- $HOME/.gradle/caches/jars-1
- $HOME/.gradle/caches/2.3
添加.gradle/caches将在每次生成时创建一个新的缓存文件。
不要忘记将2.3更改为gradle版本。您只需在.travis.yml中添加以下行即可:
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
您可以获得更多信息。将此添加到您的
。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/
从版本
3.5.1
开始,它记录在Travis文档的中。最简单、最有效的方法是只缓存缓存/模块-2
和缓存/包装器
目录。缓存整个缓存
目录会添加太多文件,这会导致更大的延迟。您仍然需要删除modules-2.lock
文件
before_cache:
- rm -rf $HOME/.gradle/caches/modules-2/modules-2.lock
cache:
- $HOME/.gradle/caches/modules-2
- $HOME/.gradle/wrapper/
这并不是一个真正的答案,它只是评论说~/.gradle/caches不是一个好答案:(当然,检查一下这个例子: