- Build Script Basics
- Authoring Tasks
- Writing Build Scripts
- Working With Files
- Using Gradle Plugins
- Build Lifecycle
- Logging
- Avoiding traps
- Structuring and Building a Software Component with Gradle
- Declaring Dependencies between Subprojects
- Sharing Build Logic between Subprojects
- Fine Tuning the Project Layout
- Configuration time and execution time
- Building Java & JVM projects
- Testing in Java & JVM projects
- Toolchains for JVM projects
- Managing Dependencies of JVM Projects
- The Java Library Plugin
- The Application Plugin
- The Java Platform Plugin
- The Groovy Plugin
- The Scala Plugin
- Dependency management in Gradle
- Declaring repositories
- Declaring dependencies
- Understanding the difference between libraries and applications
- Viewing and debugging dependencies
- Understanding dependency resolution
- Verifying dependencies
- Declaring Versions and Ranges
- Declaring Rich Versions
- Handling versions which change over time
- Locking dependency versions
- Upgrading versions of transitive dependencies
- Downgrading versions and excluding dependencies
- Sharing dependency versions between projects
- Aligning dependency versions
- Handling mutually exclusive dependencies
- Fixing metadata with component metadata rules
- Customizing resolution of a dependency directly
- Preventing accidental dependency upgrades
- Declaring Capabilities of a Library
- Modeling feature variants and optional dependencies
- Understanding variant selection
- Working with Variant Attributes
- Sharing outputs between projects
- Transforming dependency artifacts on resolution