缓存gradle依赖关系,Travis CI

Cen*_*ril 17 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
Run Code Online (Sandbox Code Playgroud)

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

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

...
Run Code Online (Sandbox Code Playgroud)

会添加:

cache:
  directories:
  - $HOME/.gradle
Run Code Online (Sandbox Code Playgroud)

工作?也许:

cache:
  directories:
  - $HOME/.gradle/caches/modules-2/files-2.1
Run Code Online (Sandbox Code Playgroud)

use*_*610 17

将此添加到您的.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/
Run Code Online (Sandbox Code Playgroud)

它在Travis文档中有记录,网址https://docs.travis-ci.com/user/languages/java/#projects-using-gradle


Pet*_*ser 6

你必须至少缓存~/.gradle/wrapper~/.gradle/caches,但我可能会先有自己~/.gradle.(如有必要,可以通过设置GRADLE_USER_HOME环境变量来更改后者的位置).升级到较新的Gradle版本时,缓存结构可能会发生变化,因此有时可能会使缓存无效.

PS:请不要在这里和Gradle论坛上发布双重帖(也没关系).


Zim*_*imy 6

可能你应该添加sudo: false到你的.travis.yml,因为缓存不适用于公共存储库.它会阻止你使用sudo,setid,setgid,但它允许缓存机制!

但我发现缓存$HOME/.gradle/caches不是一个很好的变种,因为$HOME/.gradle/caches/modules-2/modules-2.lock每次构建都会更改文件,因此Travis每次都会重新打包缓存,并完全上传该缓存.对我而言,这比下载所有依赖项要慢.所以也许更好地指定别的东西比$HOME/.gradle/caches.

  • 这不是一个真正的答案,它只是评论〜/ .gradle /缓存不是一个好的答案:( (2认同)