缓存gradle依赖关系,Travis CI

时间:2014-11-03 21:17:45

标签: 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/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

6 个答案:

答案 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,因为缓存不适用于公共存储库。它会阻止您使用sudosetidsetgid,但它允许使用缓存机制!

但是我发现缓存$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-2caches/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/