Cache gradle dependencies, Travis CI
Add this to your .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/
It is documented in Travis documentation at https://docs.travis-ci.com/user/languages/java/#projects-using-gradle
You'll have to cache at least ~/.gradle/wrapper
and ~/.gradle/caches
, but I'd probably start out with ~/.gradle
. (If necessary, the location of the latter can be changed by setting the GRADLE_USER_HOME
environment variable). When upgrading to a newer Gradle version, the cache structure may change, so it might make sense to invalidate the cache from time to time.
PS: Please don't double-post here and on the Gradle forums (either is fine).
Probably you should add sudo: false
to your .travis.yml
, because caching is not available for public repositories. It will prevent you from using sudo
, setid
, setgid
, but it allows caching mechanism!
But I have found that caching $HOME/.gradle/caches
is not a very good variant, because the file $HOME/.gradle/caches/modules-2/modules-2.lock
is changed every build, so Travis would repack the cache every time, and do full upload of that cache. That is slower for me than downloading all my dependencies. So maybe it would be better specify something else than $HOME/.gradle/caches
.