Gradle 缓存渐变依赖项,Travis CI

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

我正在尝试缓存私有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

...
上次工作构建的相关部分:

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不是一个好答案:(当然,检查一下这个例子: