$> gradle --build-cache assemble
Build cache is an incubating feature.
:compileJava FROM-CACHE
:processResources
:classes
:jar
:assemble
BUILD SUCCESSFUL
Stefan Wolf (@wolfs42), Gradle
Multi purpose software automation tool
Build, automate and deliver better software, faster
Cross-platform
Language agnostic
Apache v2 licensed
A Build Tool + Gradle Enterprise (on premise + cloud)
~30 full time engineers working on Gradle
3.0 released on August 15th 2016
3.4 released on February 20th 2016
3.5 released on April 10th 2017
4.0 released on June 14th 2017
Releasing every 4 - 6 weeks.
3-5 million downloads per month
IDE
Languages and frameworks
Good hardware
Training
Food in cafeteria
Fast feedback cycles
High degree of automation
Faster debugging
Productivity culture
Maximum build performance
Measure and optimize
Build reliability
Maximum build performance is the maximum achievable performance of a build system for your code base.
Large monolithic: 1 prj, 50000 src
Small multiproject: 10 prj, 100 src/prj
Medium multiproject: 100 prj, 100 src/prj
Large multiproject: 500 prj, 100 src/prj
Compile avoidance
Incremental compilation
Gradle is reusing results
from last time
when we ran this build
on this machine.
from anytime before
when we ran any build
anywhere.
$> gradle --build-cache assemble
Build cache is an incubating feature.
:compileJava FROM-CACHE
:processResources
:classes
:jar
:assemble
BUILD SUCCESSFUL
Stable for Java projects
Gradle Enterprise provides a backend
Dockerhub: gradle/build-cache-node
Worker API (aka. parallel by default)
Incremental compile with annotation processors
Cacheable Scala and C/C++ tasks
Faster configuration time
N-Level build caches
Multi-location support for cache backend
Need data
CI server captures times
What about developer builds
Enter build scans
Reliable parallelism
Cache is a forcing function
Reliable configure on demand
Build scans for debugging
Works now with --continuous
Excellent IDE integration (Eclipse/Intellij)
Parallel composite build
Integration with build scans
Make substitution configureable
Composite task names
What is wrong with this:
dependencies {
compile project(':lib')
}
dependencies {
implementation project(':lib')
}
Source dependencies
Swift support
Variant aware DM for Binary repositories
Build scans!
Traceability
Custom values
Accountability
Professionalization
Product vs Support
New console output
Commandline completion
Kotlin DSL version 0.10 (Gradle 4.1)
Statically typed
Good IDE support
Gradle Enterprise: https://gradle.com
Einführung in Gradle: https://gradle.org/training/intro-to-gradle-ger/
Gradle Summit 2017 videos: Youtube
Learn more at www.gradle.org