Gradle
User Manual
Theme
Community
Community Home
Community Forums
Community Plugins
DPE University
Events
News
Newsletter
Blog
Twitter
Develocity
Github
Gradle User Manual
Releases
All Releases
Release Notes
Installing Gradle
Upgrading Gradle
Within versions 9.x.y
To version 9.0.0
Within versions 8.x
From version 7.x to 8.0
From version 6.x to 7.0
From version 5.x to 6.0
From version 4.x to 5.0
Migrating to Gradle
from Maven
from Ant
Compatibility Notes
Gradle's Feature Lifecycle
Gradle Tutorials
Getting Started
Running Gradle Builds
1. Core Concepts
2. Wrapper Basics
3. CLI Basics
4. Settings File Basics
5. Build File Basics
6. Dependencies Basics
7. Tasks Basics
8. Caching Basics
9. Plugins Basics
10. Build Scan Basics
Beginner Tutorial
1. Initializing the Project
2. Running Tasks
3. Understanding Dependencies
4. Applying Plugins
5. Exploring Incremental Builds
6. Enabling the Build Cache
Authoring Gradle Builds
1. Anatomy of a Gradle Build
2. Structuring Multi-Project Builds
3. Gradle Build Lifecycle
4. Writing Build Scripts
5. Gradle Managed Types
6. Declaring Dependencies
7. Creating and Registering Tasks
8. Working with Plugins
Intermediate Tutorial
1. Initializing the Project
2. Understanding the Build Lifecycle
3. Multi-Project Builds
4. Writing the Settings File
5. Writing a Build Script
6. Writing Tasks
7. Writing Plugins
Developing Gradle Plugins
1. Plugin Introduction
2. Pre-Compiled Script Plugins
3. Binary Plugins
4. Developing Binary Plugins
5. Testing Binary Plugins
6. Publishing Binary Plugins
Advanced Tutorial
1. Initializing the Project
Gradle Reference
Runtime and Configuration
Command-Line Interface
Logging and Output
Gradle Wrapper
Gradle Daemon
Gradle Directories
Build Configuration
Build Lifecycle
Build Scan
Continuous Builds
File System Watching
DSLs and APIs
Java API
Groovy DSL Primer
Groovy DSL
Kotlin DSL Primer
Kotlin DSL
Public APIs
Default Script Imports
Groovy to Kotlin DSL Migration
Best Practices
Introduction
Index
General Best Practices
Best Practices for Structuring Builds
Best Practices for Dependencies
Best Practices for Tasks
Best Practices for Performance
Best Practices for Security
Core Plugins
List of Core Plugins
Gradle Types
Lazy vs Eager Evaluation
Properties and Providers
Collections
Services and Service Injection
Working with Files
Structuring Builds
Structuring and Organizing Projects
Multi-Project Builds
Sharing Build Logic using buildSrc
Composite Builds
Configuration on Demand
Isolated Projects
Task Development
Understanding Tasks
Controlling Task Execution
Organizing Tasks
Implementing Custom Tasks
Lazy Configuration
Parallel Task Execution
Advanced Task Development
Shared Build Services
Plugin Development
Introduction to Plugins
Introduction to Plugins
Plugin Implementation Options
Precompiled Script Plugins
Binary Plugins
Testing Plugins
Publishing Plugins
Reporting Plugin Problems
Other Topics
Initialization Scripts
Dataflow Actions
Testing with TestKit
Using Ant from Gradle
Optimizing Gradle Builds
Improving Performance
Build Cache
Enabling and Configuring
Why use the Build Cache?
Understanding the Impact
Learning Basic Concepts
Caching Java Project
Caching Android Project
Debugging Caching Issues
Troubleshooting
Configuration Cache
How it Works
Enabling and Configuring
Requirements for your Build Logic
Debugging and Troubleshooting
Status
Dependency Management
Getting Started
Learning the Basics
1. Declaring Dependencies
2. Dependency Configurations
3. Declaring Repositories
4. Centralizing Dependencies
5. Dependency Constraints and Conflict Resolution
Advanced Concepts
1. Dependency Resolution
2. Graph Resolution
3. Variant Selection
4. Artifact Resolution
Declaring Dependencies
Declaring Dependencies
Viewing Dependencies
Declaring Versions and Ranges
Declaring Dependency Constraints
Creating Dependency Configurations
Gradle Distribution-Specific Dependencies
Verifying Dependencies
Declaring Repositories
Declaring Repositories
Centralizing Repository Declarations
Repository Types
Metadata Formats
Supported Protocols
Filtering Repository Content
Centralizing Dependencies
Creating Platforms
Creating Version Catalogs
Using Catalogs with Platforms
Managing Dependencies
Locking Versions
Using Resolution Rules
Modifying Dependency Metadata
Caching Dependencies
Controlling Dependency Resolution
Consistent Dependency Resolution
Resolving Specific Artifacts
Capabilities
Variants and Attributes
Artifact Views
Artifact Transforms
Publishing Libraries
Setting up Publishing
Understanding Gradle Module Metadata
Signing Artifacts
Customizing Publishing
Maven Publish Plugin
Ivy Publish Plugin
Platforms
JVM Builds
Building Java & JVM projects
Testing Java & JVM projects
Java Toolchains
Toolchains for JVM projects
Toolchain Resolver Plugins
Managing Dependencies
JVM Plugins
Java Library Plugin
Java Application Plugin
Java Platform Plugin
Groovy Plugin
Scala Plugin
C++ Builds
Building C++ projects
Testing C++ projects
Swift Builds
Building Swift projects
Testing Swift projects
Integration
Third-party Tools
APIs
Tooling API
Test Reporting API
How-To-Guides
Structuring Builds
Convert a Single-Project Build to Multi-Project
Dependency Management
How to Downgrade Transitive Dependencies
How to Upgrade Transitive Dependencies
How to Exclude Transitive Dependencies
How to Prevent Accidental or Eager Dependency Upgrades
How to Align Dependency Versions
How to Share Outputs Between Projects
How to Resolve Specific Artifacts from a Module Dependency
How to Use a Local Fork of a Module Dependency
How to Fix Version Catalog Problems
How to Create Feature Variants of a Library
Additional
Samples
Glossary
Cookbook
Single Page Version