# Gradle Build Tool Documentation > Official documentation for the Gradle build tool, covering project configuration, dependency management, task authoring, and plugin development. Notes for agents: - `current` in a URL is the latest release. Documentation for a specific version is at `https://docs.gradle.org//`, for example `https://docs.gradle.org/9.9.0/userguide/`. - User manual pages are available as Markdown at the same URL with `.md` instead of `.html`. Any page returns Markdown when requested with `Accept: text/markdown`. - Examples use the Kotlin DSL (`build.gradle.kts`). The Markdown pages keep only the Kotlin DSL variant of samples that exist in both DSLs. - Run builds with the Gradle Wrapper, for example `./gradlew build`, rather than a locally installed `gradle`. Java version requirements are in the [Compatibility Matrix](https://docs.gradle.org/current/userguide/compatibility.md). - [Homepage](https://docs.gradle.org/) - [Full Documentation](https://docs.gradle.org/llms-full.txt) ## Getting Started - [Getting Started](https://docs.gradle.org/current/userguide/getting_started.md): Everyone has to start somewhere, and if you’re new to Gradle, this is where to… - [Troubleshooting builds](https://docs.gradle.org/current/userguide/troubleshooting.md): This page covers how to diagnose failing builds, installation problems, slow… ## Gradle Releases - [Gradle 9.9.1 Release Notes](https://docs.gradle.org/current/release-notes.html) - [Installing Gradle](https://docs.gradle.org/current/userguide/installation.md): If all you want to do is run an existing Gradle project, then you don’t need to… - [Upgrading within Gradle 9.x.y](https://docs.gradle.org/current/userguide/upgrading_version_9.md): This chapter provides the information you need to migrate your Gradle 9.x.y… - [Upgrading to Gradle 9.0.0](https://docs.gradle.org/current/userguide/upgrading_major_version_9.md): This chapter provides the information you need to migrate your Gradle 8.14.6… - [Upgrading within Gradle 8.x](https://docs.gradle.org/current/userguide/upgrading_version_8.md): This chapter provides the information you need to migrate your Gradle 8.x… - [Upgrading from Gradle 7.x to 8.0](https://docs.gradle.org/current/userguide/upgrading_version_7.md): This chapter provides the information you need to migrate your Gradle 7.x… - [Upgrading from Gradle 6.x to 7.0](https://docs.gradle.org/current/userguide/upgrading_version_6.md): This chapter provides the information you need to migrate your Gradle 6.x… - [Upgrading from Gradle 5.x to 6.0](https://docs.gradle.org/current/userguide/upgrading_version_5.md): This chapter provides the information you need to migrate your Gradle 5.x… - [Upgrading from Gradle 4.x to 5.0](https://docs.gradle.org/current/userguide/upgrading_version_4.md): This chapter provides the information you need to migrate your older Gradle 4.x… - [Migrating Builds From Apache Maven](https://docs.gradle.org/current/userguide/migrating_from_maven.md): Apache Maven is a build tool for Java and other JVM-based projects. - [Migrating Builds From Apache Ant](https://docs.gradle.org/current/userguide/migrating_from_ant.md): Apache Ant is a build tool with a long history in the Java world that is still… - [Compatibility Matrix](https://docs.gradle.org/current/userguide/compatibility.md): The sections below describe Gradle’s compatibility with several integrations. - [The Feature Lifecycle](https://docs.gradle.org/current/userguide/feature_lifecycle.md): Gradle is under constant development. ## Gradle Fundamentals - [Core Concepts](https://docs.gradle.org/current/userguide/gradle_basics.md): Gradle automates building, testing, and deployment of software from information… - [Wrapper Basics](https://docs.gradle.org/current/userguide/gradle_wrapper_basics.md): The recommended way to execute any Gradle build is with the Gradle Wrapper. - [Command-Line Interface Basics](https://docs.gradle.org/current/userguide/command_line_interface_basics.md): The command-line interface is the primary method of interacting with Gradle… - [Settings File Basics](https://docs.gradle.org/current/userguide/settings_file_basics.md): The settings file (settings.gradle(.kts)) is the entry point of every Gradle… - [Build File Basics](https://docs.gradle.org/current/userguide/build_file_basics.md): Generally, a build script (build.gradle(.kts)) details build configuration,… - [Dependencies and Dependency Management Basics](https://docs.gradle.org/current/userguide/dependency_management_basics.md): Gradle has built-in support for dependency management. - [Task Basics](https://docs.gradle.org/current/userguide/task_basics.md): A task represents some independent unit of work that a build performs, such as… - [Incremental Builds and Build Caching Basic](https://docs.gradle.org/current/userguide/gradle_optimizations.md): Gradle uses two main features to reduce build time: incremental builds and… - [Plugin Basics](https://docs.gradle.org/current/userguide/plugin_basics.md): Gradle is built on a flexible plugin system. - [Build Scan Basics](https://docs.gradle.org/current/userguide/build_scans.md): A Build Scan is a representation of metadata captured as you run your build. - [Anatomy of a Gradle Build](https://docs.gradle.org/current/userguide/gradle_directories_intermediate.md): A Gradle build is made up of several key components that work together to… - [Structuring Multi-Project Builds](https://docs.gradle.org/current/userguide/multi_project_builds_intermediate.md): As your codebase grows, organizing it into multiple subprojects becomes… - [Gradle Build Lifecycle](https://docs.gradle.org/current/userguide/build_lifecycle_intermediate.md): The build lifecycle is the sequence of phases Gradle executes to turn your… - [Writing Build Scripts](https://docs.gradle.org/current/userguide/writing_build_scripts_intermediate.md): The initialization phase in the Gradle Build lifecycle finds the settings file. - [Gradle Managed Types](https://docs.gradle.org/current/userguide/gradle_managed_types_intermediate.md): Gradle Managed Types are the building blocks for writing modern, efficient, and… - [Declaring and Managing Dependencies](https://docs.gradle.org/current/userguide/dependencies_intermediate.md): Gradle provides a rich and flexible model for declaring dependencies, managing… - [Creating and Registering Tasks](https://docs.gradle.org/current/userguide/writing_tasks_intermediate.md): The work that Gradle can do on a project is defined by one or more tasks. - [Working with Plugins](https://docs.gradle.org/current/userguide/plugins_intermediate.md): Much of Gradle’s functionality is delivered via plugins, including core plugins… - [Plugin Introduction](https://docs.gradle.org/current/userguide/plugin_introduction_advanced.md): A Gradle plugin is an add-on that enhances your build by adding tasks, applying… - [Pre-compiled Script Plugins](https://docs.gradle.org/current/userguide/pre_compiled_script_plugin_advanced.md): The simplest plugin you can develop is called a precompiled script plugins. - [Binary Plugin](https://docs.gradle.org/current/userguide/binary_plugin_advanced.md): Creating your own custom plugin might be a great solution when Gradle doesn’t… - [Binary Plugin Development](https://docs.gradle.org/current/userguide/developing_binary_plugin_advanced.md): When creating a plugin in Gradle, you will most likely offer tasks users can… - [Binary Plugin Testing](https://docs.gradle.org/current/userguide/testing_binary_plugin_advanced.md): Gradle provides a robust mechanism for testing binary plugins. - [Binary Plugin Publishing](https://docs.gradle.org/current/userguide/publishing_binary_plugin_advanced.md): Once your plugin is complete and tested, you may want to publish it so it can… ## Gradle Tutorials - [Part 1: Initializing the Project](https://docs.gradle.org/current/userguide/part1_gradle_init.md): In this tutorial, you’ll learn the core concepts of Gradle by creating,… - [Part 2: Running Gradle Tasks](https://docs.gradle.org/current/userguide/part2_gradle_tasks.md): Learn the basics of Gradle tasks by running one and looking at its output. - [Part 3: Dependency Management](https://docs.gradle.org/current/userguide/part3_gradle_dep_man.md): Learn the basics of project dependencies and Gradle’s dependency management. - [Part 4: Applying Gradle Plugins](https://docs.gradle.org/current/userguide/part4_gradle_plugins.md): Learn about how plugins extend Gradle’s capabilities and use a popular plugin. - [Part 5: Exploring Incremental Builds](https://docs.gradle.org/current/userguide/part5_gradle_inc_builds.md): Learn the basics of Gradle’s incremental builds. - [Part 6: Enabling the Gradle Build Cache](https://docs.gradle.org/current/userguide/part6_gradle_caching.md): Learn the basics of Gradle’s caching system. - [Part 1: Initializing the Project](https://docs.gradle.org/current/userguide/part1_gradle_init_project.md): Learn the basics of authoring Gradle by first creating a Java app using Gradle… - [Part 2: The Build Lifecycle](https://docs.gradle.org/current/userguide/part2_build_lifecycle.md): Learn about the Gradle build lifecycle and what each phase represents. - [Part 3: Multi-Project Builds](https://docs.gradle.org/current/userguide/part3_multi_project_builds.md): Learn the basics of structuring Gradle projects using subprojects and composite… - [Part 4: Writing the Settings File](https://docs.gradle.org/current/userguide/part4_settings_file.md): Learn the basics of authoring Gradle by developing the Settings File. - [Part 5: Writing a Build Script](https://docs.gradle.org/current/userguide/part5_build_scripts.md): Learn the basics of authoring Gradle by developing the Build Script. - [Part 6: Writing Tasks](https://docs.gradle.org/current/userguide/part6_writing_tasks.md): Learn the basics of authoring Gradle tasks by creating a simple one in your… - [Part 7: Writing Plugins](https://docs.gradle.org/current/userguide/part7_writing_plugins.md): Learn the basics of writing and applying Gradle plugins. - [Part 1: Initializing the Project](https://docs.gradle.org/current/userguide/part1_gradle_init_plugin.md): Learn the basics of developing Gradle plugins starting with gradle init. - [Part 2: Add an Extension](https://docs.gradle.org/current/userguide/part2_add_extension.md): Learn about extensions and how to add them to your plugin to make it… - [Part 3: Creating Tasks](https://docs.gradle.org/current/userguide/part3_create_custom_task.md): Learn about custom task types, create one, and add it to your plugin. - [Part 4: Writing a Unit Test](https://docs.gradle.org/current/userguide/part4_unit_test.md): Learn the basics of unit testing your plugin to ensure it behaves as expected. - [Part 5: Add a DataFlow Action](https://docs.gradle.org/current/userguide/part5_add_dataflow_action.md): Learn how to use Gradle’s modern Dataflow API to hook into the build lifecycle… - [Part 6: Writing a Functional Test](https://docs.gradle.org/current/userguide/part6_functional_test.md): Learn how to write a functional test to verify your plugin’s behavior in a… - [Part 7: Use a Consumer Project](https://docs.gradle.org/current/userguide/part7_use_consumer_project.md): Learn how to set up a dummy consumer project to test your plugin without… - [Part 8: Publish your Plugin Locally](https://docs.gradle.org/current/userguide/part8_publish_locally.md): Learn how to verify your plugin can be published by pushing it to a local Maven… ## Gradle Best Practices - [Best Practices for Authoring Gradle Builds](https://docs.gradle.org/current/userguide/best_practices.md): Gradle is a powerful and flexible tool for building software, but along with… - [Best Practices Index](https://docs.gradle.org/current/userguide/best_practices_index.md): The table below provides a complete list of documented Gradle Best Practices. - [General Gradle Best Practices](https://docs.gradle.org/current/userguide/best_practices_general.md): Prefer the Kotlin DSL (build.gradle.kts) over the Groovy DSL (build.gradle)… - [Best Practices for Structuring Builds](https://docs.gradle.org/current/userguide/best_practices_structuring_builds.md): Modularize your builds by splitting your code into multiple projects. - [Best Practices for Dependencies](https://docs.gradle.org/current/userguide/best_practices_dependencies.md): Version Catalogs provide a centralized, declarative way to manage dependency… - [Best Practices for Tasks](https://docs.gradle.org/current/userguide/best_practices_tasks.md): The task dependsOn method should only be used for lifecycle tasks (tasks… - [Best Practices for Performance](https://docs.gradle.org/current/userguide/best_practices_performance.md): Gradle publishes two distribution variants for each release: -bin (binaries… - [Best Practices for Security](https://docs.gradle.org/current/userguide/best_practices_security.md): Set distributionSha256Sum in gradle-wrapper.properties to verify the integrity… - [Best Practices for Testing](https://docs.gradle.org/current/userguide/best_practices_testing.md): You should test any custom tasks or plugins you create using Gradle TestKit. ## Gradle DSLs and APIs - [A Groovy Build Script Primer](https://docs.gradle.org/current/userguide/groovy_build_script_primer.md): Ideally, a Groovy build script looks mostly like configuration: setting some… - [Gradle Kotlin DSL Primer](https://docs.gradle.org/current/userguide/kotlin_dsl.md): Gradle’s Kotlin DSL offers an alternative to the traditional Groovy DSL,… - [Migrating build logic from Groovy to Kotlin](https://docs.gradle.org/current/userguide/migrating_from_groovy_to_kotlin_dsl.md): This section will walk you through converting your Groovy-based Gradle build… - [Public Gradle APIs](https://docs.gradle.org/current/userguide/public_apis.md): Gradle provides many public APIs that allow developers to interact with various… - [Default Imports](https://docs.gradle.org/current/userguide/default_script_imports.md): To make build scripts more concise, Gradle automatically adds a set of import… ## Gradle Reference - [Command-Line Interface](https://docs.gradle.org/current/userguide/command_line_interface.md): The command-line interface is the primary method of interacting with Gradle. - [Logging and Output](https://docs.gradle.org/current/userguide/logging.md): The build log is the primary way Gradle communicates what’s happening during a… - [Gradle Wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.md): The recommended way to execute any Gradle build is with the help of the Gradle… - [Gradle Daemon](https://docs.gradle.org/current/userguide/gradle_daemon.md): The Gradle Daemon is a long-lived, persistent process that runs in the… - [Gradle-managed Directories and Caches](https://docs.gradle.org/current/userguide/directory_layout.md): Gradle uses two main directories to perform and manage its work and stores… - [Build Environment Configuration](https://docs.gradle.org/current/userguide/build_environment.md): Configuring the build environment is a powerful way to customize the build… - [Build Lifecycle](https://docs.gradle.org/current/userguide/build_lifecycle.md): The build lifecycle is the sequence of phases Gradle executes to turn your… - [Build Scan](https://docs.gradle.org/current/userguide/inspect.md): Gradle provides multiple ways to inspect your build: - [Continuous Builds](https://docs.gradle.org/current/userguide/continuous_builds.md): Continuous Build allows you to automatically re-execute the requested tasks… - [File System Watching](https://docs.gradle.org/current/userguide/file_system_watching.md): Gradle maintains a Virtual File System (VFS) to calculate what needs to be… - [Gradle Plugin Reference](https://docs.gradle.org/current/userguide/plugin_reference.md): This page contains links and short descriptions for all the core plugins… - [The Java Plugin](https://docs.gradle.org/current/userguide/java_plugin.md): The Java plugin adds Java compilation along with testing and bundling… - [The Java Library Plugin](https://docs.gradle.org/current/userguide/java_library_plugin.md): The Java Library plugin expands the capabilities of the Java Plugin (java) by… - [The Java Platform Plugin](https://docs.gradle.org/current/userguide/java_platform_plugin.md): The Java Platform plugin brings the ability to declare platforms for the Java… - [The Groovy Plugin](https://docs.gradle.org/current/userguide/groovy_plugin.md): The Groovy plugin extends the Java plugin to add support for Groovy projects. - [The Scala Plugin](https://docs.gradle.org/current/userguide/scala_plugin.md): The Scala plugin extends the Java plugin to add support for Scala projects. - [The ANTLR Plugin](https://docs.gradle.org/current/userguide/antlr_plugin.md): The ANTLR plugin extends the Java Library plugin to add support for generating… - [The JVM Test Suite Plugin](https://docs.gradle.org/current/userguide/jvm_test_suite_plugin.md): The JVM Test Suite plugin (plugin id: jvm-test-suite) provides a DSL and API to… - [The Java Test Fixtures Plugin](https://docs.gradle.org/current/userguide/java_test_fixtures_plugin.md): The Java Test Fixtures plugin (plugin id: java-test-fixtures) adds support for… - [The Test Report Aggregation Plugin](https://docs.gradle.org/current/userguide/test_report_aggregation_plugin.md): The Test Report Aggregation plugin (plugin id: test-report-aggregation)… - [The JVM Toolchains Plugins](https://docs.gradle.org/current/userguide/jvm_toolchains_plugins.md): Two related core plugins provide Java toolchain support: jvm-toolchains works… - [C++ Application](https://docs.gradle.org/current/userguide/cpp_application_plugin.md): The C++ Application Plugin provides the tasks, configurations and conventions… - [C++ Library](https://docs.gradle.org/current/userguide/cpp_library_plugin.md): The C++ Library Plugin provides the tasks, configurations, and conventions for… - [C++ Unit Test](https://docs.gradle.org/current/userguide/cpp_unit_test_plugin.md): The C++ Unit Test Plugin provides the tasks, configurations and conventions for… - [Swift Application](https://docs.gradle.org/current/userguide/swift_application_plugin.md): The Swift Application Plugin provides the tasks, configurations and conventions… - [Swift Library](https://docs.gradle.org/current/userguide/swift_library_plugin.md): The Swift Library Plugin provides the tasks, configurations and conventions for… - [XCTest](https://docs.gradle.org/current/userguide/xctest_plugin.md): The XCTest Plugin provides the tasks, configurations and conventions for… - [The Application Plugin](https://docs.gradle.org/current/userguide/application_plugin.md): The Application plugin facilitates creating an executable JVM application. - [The War Plugin](https://docs.gradle.org/current/userguide/war_plugin.md): The War plugin extends the Java plugin to add support for assembling web… - [The Ear Plugin](https://docs.gradle.org/current/userguide/ear_plugin.md): The Ear plugin adds support for assembling enterprise application EAR files. - [The Maven Publish Plugin](https://docs.gradle.org/current/userguide/publishing_maven.md): The Maven Publish Plugin provides the ability to publish build artifacts to an… - [The Ivy Publish Plugin](https://docs.gradle.org/current/userguide/publishing_ivy.md): The Ivy Publish Plugin provides the ability to publish build artifacts in the… - [The Distribution Plugin](https://docs.gradle.org/current/userguide/distribution_plugin.md): The Distribution Plugin facilitates building archives that serve as… - [The Java Library Distribution Plugin](https://docs.gradle.org/current/userguide/java_library_distribution_plugin.md): The Java library distribution plugin adds support for building a distribution… - [The Version Catalog Plugin](https://docs.gradle.org/current/userguide/version_catalog_plugin.md): The Version Catalog Plugin (plugin id: version-catalog) lets you publish a… - [The Checkstyle Plugin](https://docs.gradle.org/current/userguide/checkstyle_plugin.md): The Checkstyle plugin performs quality checks on your project’s Java source… - [The PMD Plugin](https://docs.gradle.org/current/userguide/pmd_plugin.md): The PMD plugin performs quality checks on your project’s Java source files… - [The JaCoCo Plugin](https://docs.gradle.org/current/userguide/jacoco_plugin.md): The JaCoCo plugin provides code coverage metrics for Java code via integration… - [The JaCoCo Report Aggregation Plugin](https://docs.gradle.org/current/userguide/jacoco_report_aggregation_plugin.md): The JaCoCo Report Aggregation plugin (plugin id: jacoco-report-aggregation)… - [The CodeNarc Plugin](https://docs.gradle.org/current/userguide/codenarc_plugin.md): The CodeNarc plugin performs quality checks on your project’s Groovy source… - [The Eclipse Plugins](https://docs.gradle.org/current/userguide/eclipse_plugin.md): The Eclipse plugins generate files that are used by the Eclipse IDE, thus… - [The IDEA Plugin](https://docs.gradle.org/current/userguide/idea_plugin.md): The IDEA plugin generates files that are used by IntelliJ IDEA, thus making it… - [Visual Studio](https://docs.gradle.org/current/userguide/visual_studio_plugin.md): The Visual Studio Plugin generates files that are used by the Visual Studio… - [Xcode](https://docs.gradle.org/current/userguide/xcode_plugin.md): The Xcode Plugin generates files that are used by the Xcode IDE to open Gradle… - [The Base Plugin](https://docs.gradle.org/current/userguide/base_plugin.md): The Base Plugin provides some tasks and conventions that are common to most… - [Build Init Plugin](https://docs.gradle.org/current/userguide/build_init_plugin.md): The Build Init plugin can be used to create a new Gradle build. - [The Signing Plugin](https://docs.gradle.org/current/userguide/signing_plugin.md): The Signing Plugin adds the ability to digitally sign built files and artifacts. - [Gradle Plugin Development Plugin](https://docs.gradle.org/current/userguide/java_gradle_plugin.md): The Java Gradle Plugin development plugin can be used to assist in the… - [The Groovy Gradle Plugin](https://docs.gradle.org/current/userguide/groovy_gradle_plugin.md): The Groovy Gradle Plugin (plugin id: groovy-gradle-plugin) lets you author… - [The Project Report Plugin](https://docs.gradle.org/current/userguide/project_report_plugin.md): The Project report plugin adds some tasks to your project which generate… - [The Build Dashboard Plugin](https://docs.gradle.org/current/userguide/build_dashboard_plugin.md): The Build Dashboard plugin can be used to generate a single HTML dashboard that… - [Understanding Tasks](https://docs.gradle.org/current/userguide/more_about_tasks.md): A task represents some independent unit of work that a build performs, such as… - [Controlling Task Execution](https://docs.gradle.org/current/userguide/controlling_task_execution.md): Task dependencies allow tasks to be executed in a specific order based on their… - [Organizing Tasks](https://docs.gradle.org/current/userguide/organizing_tasks.md): There are two types of tasks, actionable and lifecycle tasks. - [Implementing Custom Tasks](https://docs.gradle.org/current/userguide/implementing_custom_tasks.md): Actionable tasks describe work in Gradle. - [Configuring Tasks Lazily](https://docs.gradle.org/current/userguide/lazy_configuration.md): Knowing when and where a particular value is configured is difficult to track… - [Developing Parallel Tasks](https://docs.gradle.org/current/userguide/worker_api.md): Gradle provides an API that can split tasks into sections that can be executed… - [Advanced Tasks](https://docs.gradle.org/current/userguide/custom_tasks.md): In Gradle, implementing a task that skips execution when its inputs and outputs… - [Using Shared Build Services](https://docs.gradle.org/current/userguide/build_services.md): Shared build services allow tasks to share state or resources. - [Avoiding Unnecessary Task Configuration](https://docs.gradle.org/current/userguide/task_configuration_avoidance.md): We recommend that the configuration avoidance APIs be used whenever tasks are… - [Introduction to Plugins](https://docs.gradle.org/current/userguide/plugins.md): Gradle comes with a set of powerful core systems such as dependency management,… - [Pre-compiled Script Plugins](https://docs.gradle.org/current/userguide/implementing_gradle_plugins_precompiled.md): A precompiled script plugin is a .gradle.kts (Kotlin DSL) or .gradle (Groovy… - [Convention Plugins](https://docs.gradle.org/current/userguide/implementing_gradle_plugins_convention.md): A convention plugin is a type of pre-compiled script plugin. - [Binary Plugins](https://docs.gradle.org/current/userguide/implementing_gradle_plugins_binary.md): Binary plugins refer to plugins that are compiled and distributed as JAR files. - [Testing Plugins](https://docs.gradle.org/current/userguide/testing_gradle_plugins.md): Testing plays a crucial role in the development process by ensuring reliable… - [Validating Plugins](https://docs.gradle.org/current/userguide/validation_problems.md): Gradle validates the metadata of tasks and artifact transforms: how their… - [Preparing to Publish Plugins](https://docs.gradle.org/current/userguide/preparing_to_publish.md): To share a Gradle plugin, package it into JAR files and generate the… - [Publishing Plugins to the Gradle Plugin Portal](https://docs.gradle.org/current/userguide/publishing_gradle_plugins.md): Publishing your plugin is the primary way to make it available to other builds. - [Reporting Plugin Problems with the Problems API](https://docs.gradle.org/current/userguide/reporting_problems.md): Gradle’s Problems API lets plugins report rich, structured information about… - [Initialization Scripts and Init Plugins](https://docs.gradle.org/current/userguide/init_scripts.md): Initialization scripts (init scripts) are Gradle scripts that run during the… - [Testing Build Logic with TestKit](https://docs.gradle.org/current/userguide/test_kit.md): The Gradle TestKit helps you functionally test Gradle plugins and build logic… - [Dependency Management](https://docs.gradle.org/current/userguide/getting_started_dep_man.md): Software projects typically depend on other libraries to function. - [1. Declaring dependencies](https://docs.gradle.org/current/userguide/declaring_dependencies.md): Declaring dependencies in Gradle involves specifying libraries or files that… - [2. Dependency Configurations](https://docs.gradle.org/current/userguide/dependency_configurations.md): Every dependency declared for a Gradle project applies to a specific scope. - [3. Declaring repositories](https://docs.gradle.org/current/userguide/declaring_repositories.md): Gradle needs to know where it can download the dependencies used in the project. - [4. Centralizing dependencies](https://docs.gradle.org/current/userguide/centralizing_dependencies.md): Central dependencies can be managed in Gradle using various techniques such as… - [5. Dependency Constraints and Conflict Resolution](https://docs.gradle.org/current/userguide/dependency_constraints_conflicts.md): When the same library is declared multiple times or when two different… - [Declaring Dependencies](https://docs.gradle.org/current/userguide/declaring_dependencies_basics.md): There are three main types of dependencies in Gradle: - [Viewing Dependencies](https://docs.gradle.org/current/userguide/viewing_debugging_dependencies.md): Gradle offers tools to navigate the results of dependency management, allowing… - [Declaring Versions and Ranges](https://docs.gradle.org/current/userguide/dependency_versions.md): You can specify dependencies with exact versions or version ranges to define… - [Declaring Dependency Constraints](https://docs.gradle.org/current/userguide/dependency_constraints.md): Version declarations (including ranges) only affect the dependencies you… - [Creating Dependency Configurations](https://docs.gradle.org/current/userguide/declaring_configurations.md): In Gradle, dependencies are associated with specific scopes, such as… - [Gradle distribution-specific dependencies](https://docs.gradle.org/current/userguide/gradle_dependencies.md): Gradle provides special dependency notations for projects that build Gradle… - [Declaring Repositories Basics](https://docs.gradle.org/current/userguide/declaring_repositories_basics.md): Gradle can resolve local or external dependencies from one or many repositories… - [Centralizing Repository Declarations](https://docs.gradle.org/current/userguide/centralizing_repositories.md): Instead of declaring repositories in every subproject of your build or via an… - [Repository Types](https://docs.gradle.org/current/userguide/supported_repository_types.md): Gradle supports various sources for resolving dependencies, accommodating… - [Metadata Formats](https://docs.gradle.org/current/userguide/supported_metadata_formats.md): Dependency metadata refers to the information associated with a dependency that… - [Supported Protocols](https://docs.gradle.org/current/userguide/supported_repository_protocols.md): Gradle supports a variety of transport protocols for Maven and Ivy repositories. - [Filtering Repository Content](https://docs.gradle.org/current/userguide/filtering_repository_content.md): Gradle exposes an API to declare what a repository may or may not contain. - [Platforms](https://docs.gradle.org/current/userguide/platforms.md): Platforms ensure that all dependencies in a project use a coordinated set of… - [Version Catalogs](https://docs.gradle.org/current/userguide/version_catalogs.md): A version catalog is a selected list of dependencies that can be referenced in… - [Using Catalogs with Platforms](https://docs.gradle.org/current/userguide/centralizing_catalog_platform.md): Both platforms and version catalogs help manage dependency versions in a… - [Dependency Resolution Consistency](https://docs.gradle.org/current/userguide/dependency_resolution_consistency.md): In a typical Gradle project, multiple configurations exist, such as… - [Resolving Specific Artifacts](https://docs.gradle.org/current/userguide/resolving_specific_artifacts.md): When resolving a module from a Maven or Ivy repository, Gradle looks for… - [Capabilities](https://docs.gradle.org/current/userguide/component_capabilities.md): In a dependency graph, it’s common for multiple implementations of the same API… - [Variants and Attributes](https://docs.gradle.org/current/userguide/variant_attributes.md): Variants represent different versions or aspects of a component, like api vs… - [Artifact Views](https://docs.gradle.org/current/userguide/artifact_views.md): In some cases, it is desirable to customize the artifact resolution process. - [Artifact Transforms](https://docs.gradle.org/current/userguide/artifact_transforms.md): What if you want to make changes to the files contained in one of your… - [Locking Versions](https://docs.gradle.org/current/userguide/dependency_locking.md): Using dynamic dependency versions (e.g., 1.+ or [1.0,2.0)) can cause builds to… - [Using Resolution Rules](https://docs.gradle.org/current/userguide/resolution_rules.md): Gradle provides several mechanisms to directly influence the behavior of the… - [Modifying Dependency Metadata](https://docs.gradle.org/current/userguide/component_metadata_rules.md): Each component pulled from a repository includes metadata, such as its group,… - [Dependency Caching](https://docs.gradle.org/current/userguide/dependency_caching.md): Gradle contains a highly sophisticated dependency caching mechanism, which… - [Dependency Resolution](https://docs.gradle.org/current/userguide/dependency_resolution.md): Dependency resolution in Gradle can largely be thought of as a two-step process. - [Graph Resolution](https://docs.gradle.org/current/userguide/graph_resolution.md): During the graph resolution phase, Gradle constructs a resolved dependency… - [Variant Selection and Attribute Matching](https://docs.gradle.org/current/userguide/variant_aware_resolution.md): Gradle’s dependency management engine is variant aware. - [Artifact Resolution](https://docs.gradle.org/current/userguide/artifact_resolution.md): After constructing a dependency graph, Gradle performs artifact resolution,… - [Publishing a project as module](https://docs.gradle.org/current/userguide/publishing_setup.md): The vast majority of software projects build something that aims to be consumed… - [Gradle Module Metadata](https://docs.gradle.org/current/userguide/publishing_gradle_module_metadata.md): Gradle Module Metadata is a format used to serialize the Gradle component model. - [Signing artifacts](https://docs.gradle.org/current/userguide/publishing_signing.md): The Signing Plugin can be used to sign all artifacts and metadata files that… - [Customizing publishing](https://docs.gradle.org/current/userguide/publishing_customization.md): Gradle’s publication model is based on the notion of components, which are… - [Lazy vs Eager Evaluation](https://docs.gradle.org/current/userguide/lazy_eager_evaluation.md): Understanding when values in your build are computed is crucial for writing… - [Properties and Providers](https://docs.gradle.org/current/userguide/properties_providers.md): Gradle provides properties that are important for lazy configuration. - [Collections](https://docs.gradle.org/current/userguide/collections.md): Gradle provides types for maintaining collections of objects, intended to work… - [Services and Service Injection](https://docs.gradle.org/current/userguide/service_injection.md): Gradle exposes a set of services, covering things like file and archive… - [Dataflow Actions](https://docs.gradle.org/current/userguide/dataflow_actions.md): A preferred way of executing work in a Gradle build is using a task. - [Working With Files](https://docs.gradle.org/current/userguide/working_with_files.md): File operations are fundamental to nearly every Gradle build. - [Building Java & JVM projects](https://docs.gradle.org/current/userguide/building_java_projects.md): Gradle uses a convention-over-configuration approach to building JVM-based… - [Testing in Java & JVM projects](https://docs.gradle.org/current/userguide/java_testing.md): Testing on the JVM is a rich subject matter. - [Toolchains for JVM projects](https://docs.gradle.org/current/userguide/toolchains.md): Working on multiple projects can require interacting with multiple versions of… - [Toolchain Resolver Plugins](https://docs.gradle.org/current/userguide/toolchain_plugins.md): In Gradle version 7.6 and above, Gradle provides a way to define Java toolchain… - [Managing Dependencies of JVM Projects](https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.md): This chapter explains how to apply basic dependency management concepts to… - [Building C++ projects](https://docs.gradle.org/current/userguide/building_cpp_projects.md): Gradle uses a convention-over-configuration approach to building native… - [Testing in C++ projects](https://docs.gradle.org/current/userguide/cpp_testing.md): Testing in the native ecosystem takes many forms. - [Building native software](https://docs.gradle.org/current/userguide/native_software.md): The native software plugins add support for building native software… - [Building Swift projects](https://docs.gradle.org/current/userguide/building_swift_projects.md): Gradle uses a convention-over-configuration approach to building native… - [Testing in Swift projects](https://docs.gradle.org/current/userguide/swift_testing.md): Testing in the native ecosystem is a rich subject matter. - [Using Ant from Gradle](https://docs.gradle.org/current/userguide/ant.md): Gradle provides integration with Ant. ## Gradle on CI - [Gradle on CI / CD Systems](https://docs.gradle.org/current/userguide/gradle_on_ci.md): Gradle integrates with many Continuous Integration (CI) and Continuous Delivery… - [Gradle on GitHub Actions](https://docs.gradle.org/current/userguide/github-actions.md): This page is a reference for integrating Gradle with GitHub Actions using the… - [Gradle on GitLab CI](https://docs.gradle.org/current/userguide/gitlab-ci.md): This page is a reference for integrating Gradle with GitLab CI/CD on… - [Gradle on Jenkins](https://docs.gradle.org/current/userguide/jenkins.md): This page is a reference for integrating Gradle with Jenkins. - [Gradle on TeamCity](https://docs.gradle.org/current/userguide/teamcity.md): This page is a reference for integrating Gradle with JetBrains TeamCity. - [Gradle on Travis CI](https://docs.gradle.org/current/userguide/travis-ci.md): This page is a reference for integrating Gradle with Travis CI. ## Structuring Gradle Builds - [Structuring and Organizing Gradle Projects](https://docs.gradle.org/current/userguide/organizing_gradle_projects.md): It is important to structure your Gradle project to optimize build performance. - [Multi-Project Builds](https://docs.gradle.org/current/userguide/multi_project_builds.md): As projects grow, it’s common to split them into smaller, focused modules that… - [Sharing Build Logic using buildSrc](https://docs.gradle.org/current/userguide/sharing_build_logic_between_subprojects.md): Subprojects in a multi-project build often share common dependencies. - [Composite Builds (Included Builds)](https://docs.gradle.org/current/userguide/composite_builds.md): A composite build is a build that includes other builds; those builds are known… - [Configuration On Demand](https://docs.gradle.org/current/userguide/configuration_on_demand.md): Configuration-on-demand attempts to configure only the relevant projects for… ## Optimizing Gradle Builds - [Improve the Performance of Gradle Builds](https://docs.gradle.org/current/userguide/performance.md): Build performance is essential to productivity. - [Build Cache](https://docs.gradle.org/current/userguide/build_cache.md): The Gradle build cache is a cache mechanism that aims to save time by reusing… - [Use cases for the build cache](https://docs.gradle.org/current/userguide/build_cache_use_cases.md): This section covers the different use cases for Gradle’s build cache, from… - [Build cache performance](https://docs.gradle.org/current/userguide/build_cache_performance.md): The sole reason to use any build cache is to make builds faster. - [Important concepts](https://docs.gradle.org/current/userguide/build_cache_concepts.md): How much of your build gets loaded from the cache depends on many factors. - [Caching Java projects](https://docs.gradle.org/current/userguide/caching_java_projects.md): As of Gradle 4.0, the build tool fully supports caching plain Java projects. - [Caching Android projects](https://docs.gradle.org/current/userguide/caching_android_projects.md): While it is true that Android uses the Java toolchain as its foundation, there… - [Debugging and diagnosing Build Cache misses](https://docs.gradle.org/current/userguide/build_cache_debugging.md): To make the most of task output caching, it is important that any necessary… - [Solving common problems](https://docs.gradle.org/current/userguide/common_caching_problems.md): Small problems in a build, like forgetting to declare a configuration file as… - [Configuration Cache](https://docs.gradle.org/current/userguide/configuration_cache.md): The Configuration Cache improves build performance by caching the result of the… - [Enabling and Configuring the Configuration Cache](https://docs.gradle.org/current/userguide/configuration_cache_enabling.md): By default, Gradle does not use the Configuration Cache. - [Adopting the Configuration Cache](https://docs.gradle.org/current/userguide/configuration_cache_adoption.md): This guide is a linear, step-by-step path for adopting the Configuration Cache… - [Debugging and Troubleshooting the Configuration Cache](https://docs.gradle.org/current/userguide/configuration_cache_debugging.md): This section provides general guidelines for resolving issues with the… - [Configuration Cache Requirements for your Build Logic](https://docs.gradle.org/current/userguide/configuration_cache_requirements.md): To capture and reload the task graph state using the Configuration Cache,… - [Configuration Cache Status](https://docs.gradle.org/current/userguide/configuration_cache_status.md): This feature is not enabled by default. - [Isolated Projects](https://docs.gradle.org/current/userguide/isolated_projects.md): Isolated Projects is an incubating feature aimed at improving Gradle… ## Securing Gradle Builds - [Securing Gradle Builds](https://docs.gradle.org/current/userguide/security.md): Every Gradle build pulls in code from external repositories, executes tools you… - [Securing Repositories](https://docs.gradle.org/current/userguide/securing_repositories.md): Every JAR, POM, and plugin your project uses is fetched from a repository, and… - [Securing Dependencies](https://docs.gradle.org/current/userguide/securing_dependencies.md): Every artifact your build consumes, including transitively pulled-in libraries… - [Securing the Build Tool](https://docs.gradle.org/current/userguide/securing_build_tool.md): Gradle itself is part of your supply chain. ## IDE & Tool Integration - [Gradle & Third-party Tools](https://docs.gradle.org/current/userguide/third_party_integration.md): Gradle can be integrated with many different third-party tools such as IDEs and… - [Tooling API](https://docs.gradle.org/current/userguide/tooling_api.md): Gradle provides a programmatic API called the Tooling API, which you can use… - [Test Event Reporting API](https://docs.gradle.org/current/userguide/test_reporting_api.md): The Test Event Reporting API allows you to capture test execution events… ## How-To-Guides - [How to Convert a Single-Project Build into a Multi-Project Build in Gradle](https://docs.gradle.org/current/userguide/how_to_convert_single_build_to_multi_build.md): When your Gradle project grows, you may want to split it into multiple… - [How to Downgrade Transitive Dependencies in Gradle](https://docs.gradle.org/current/userguide/how_to_downgrade_transitive_dependencies.md): This guide explains how to downgrade transitive dependencies in Gradle when… - [How to Upgrade Transitive Dependencies in Gradle](https://docs.gradle.org/current/userguide/how_to_upgrade_transitive_dependencies.md): This guide explains how to manage and upgrade versions of transitive… - [How to Exclude Transitive Dependencies in Gradle](https://docs.gradle.org/current/userguide/how_to_exclude_transitive_dependencies.md): This guide explains how to exclude transitive dependencies from your project… - [How to Prevent Accidental or Eager Dependency Upgrades in Gradle](https://docs.gradle.org/current/userguide/how_to_prevent_accidental_dependency_upgrades.md): This guide explains how to prevent accidental dependency versions due to… - [How to Align Dependency Versions in Gradle](https://docs.gradle.org/current/userguide/how_to_align_dependency_versions.md): Dependency version alignment ensures that different modules belonging to the… - [How to Share Artifacts Between Projects with Gradle](https://docs.gradle.org/current/userguide/how_to_share_outputs_between_projects.md): Gradle provides a mechanism to share artifacts between projects in a flexible… - [How to Resolve Specific Artifacts from a Module Dependency with Gradle](https://docs.gradle.org/current/userguide/how_to_resolve_specific_artifacts.md): Gradle resolves module dependencies by looking for metadata files (.module,… - [How to Use a Local Fork of a Module Dependency with Gradle](https://docs.gradle.org/current/userguide/how_to_use_local_forks.md): This guide explains how to replace a module dependency with a local fork of the… - [How to Troubleshoot Version Catalog Problems in Gradle](https://docs.gradle.org/current/userguide/how_to_fix_version_catalog_problems.md): Version catalogs help manage dependencies efficiently, but sometimes errors… - [How to Create Feature Variants for a Library in Gradle](https://docs.gradle.org/current/userguide/how_to_create_feature_variants_of_a_library.md): Gradle supports the concept of feature variants, allowing a single library to… ## Other - [Networking with Gradle](https://docs.gradle.org/current/userguide/networking.md): Configuring a proxy (for downloading dependencies, for example) is done via… - [Gradle Docker Images](https://docs.gradle.org/current/userguide/docker.md): Gradle publishes Docker Official Images for running Gradle builds inside… - [Gradle on CircleCI](https://docs.gradle.org/current/userguide/circleci.md): This page is a reference for integrating Gradle with CircleCI. - [Gradle in IDEs](https://docs.gradle.org/current/userguide/gradle_ides.md): Many IDEs support Gradle including Android Studio, IntelliJ IDEA, Visual Studio… - [Part 7: Using Gradle’s Reference Materials](https://docs.gradle.org/current/userguide/part7_gradle_refs.md): Learn about the references you will need as you work with Gradle. - [Getting Started](https://docs.gradle.org/current/userguide/getting_started_dev.md): Build engineers that are ready to configure and organize custom build logic… - [Getting Started](https://docs.gradle.org/current/userguide/getting_started_eng.md): Everyone has to start somewhere, and if you’re new to Gradle, this is where to… - [Incremental build](https://docs.gradle.org/current/userguide/incremental_build.md): An important part of any build tool is the ability to avoid doing work that has… - [Implementation Options for Plugins](https://docs.gradle.org/current/userguide/implementing_gradle_plugins.md): The choice between script, precompiled script, or binary plugins depends on… - [Configuring Gradle](https://docs.gradle.org/current/userguide/config_gradle.md): The org.gradle.jvmargs Gradle property controls the VM running the build. - [Building Play applications](https://docs.gradle.org/current/userguide/play_plugin.md): Play web application support was deprecated in Gradle 5 and replaced by an… - [Writing Plugins](https://docs.gradle.org/current/userguide/writing_plugins.md): If Gradle or the Gradle community does not offer the specific capabilities your… - [Tags Used in Best Practices](https://docs.gradle.org/current/userguide/tags_reference.md): Here you can find a brief explanation of all the tags used in the best… - [Getting Started](https://docs.gradle.org/current/userguide/getting_started_auth.md): Plugin authors that are ready to write their own plugins and publish it should… ## API Reference - [Javadoc API Reference](https://docs.gradle.org/current/javadoc/) - [Groovy DSL API Reference](https://docs.gradle.org/current/dsl/) - [Kotlin DSL API Reference](https://docs.gradle.org/current/kotlin-dsl/) ## Optional - [License Information](https://docs.gradle.org/current/userguide/licenses.md): © 2025 Gradle, Inc.