// Copyright (C) 2024 Gradle, Inc.
//
// Licensed under the Creative Commons Attribution-Noncommercial-ShareAlike 4.0 International License.;
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      https://creativecommons.org/licenses/by-nc-sa/4.0/
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

= Gradle User Manual: Version {gradleVersion}
:description: Single-page Gradle User Manual for Gradle {gradleVersion}
:meta-name-robots: noindex
:meta-name-twitter_card: summary
:meta-name-twitter_site: @gradle
:meta-name-twitter_creator: @gradle
:meta-name-twitter_title: Gradle User Manual: Version {gradleVersion}
:meta-name-twitter_description: {description}
:meta-name-twitter_url: {docsUrl}/{gradleVersion}/userguide/{docname}.html
:meta-name-twitter_image: {website}/images/gradle-256x256.png

// The ToC defined below does not have an effect to the navigation sidebar of the Gradle User Manual webpage (ie docs.gradle.org/<version>>/userguide).
// The sidebar can be adjusted in platforms/documentation/docs/src/main/resources/header.html.

toc::[leveloffset=+2]

[[part:overview]]
== OVERVIEW

include::userguide.adoc[leveloffset=+2]
include::getting_started.adoc[leveloffset=+2]

[[part:releases]]
== RELEASES

include::installation.adoc[leveloffset=+2]

// Upgrading Gradle
include::upgrading_version_9.adoc[leveloffset=+2]
include::upgrading_major_version_9.adoc[leveloffset=+2]
include::upgrading_version_8.adoc[leveloffset=+2]
include::upgrading_version_7.adoc[leveloffset=+2]

// Migrating to Gradle
include::compatibility.adoc[leveloffset=+2]
include::feature_lifecycle.adoc[leveloffset=+2]

[[part:fundamentals]]
== FUNDAMENTALS

// Learning Gradle Basics
include::gradle_basics.adoc[leveloffset=+2]
include::gradle_wrapper_basics.adoc[leveloffset=+2]
include::command_line_interface_basics.adoc[leveloffset=+2]
include::settings_file_basics.adoc[leveloffset=+2]
include::build_file_basics.adoc[leveloffset=+2]
include::dependency_management_basics.adoc[leveloffset=+2]
include::task_basics.adoc[leveloffset=+2]
include::gradle_optimizations.adoc[leveloffset=+2]
include::plugin_basics.adoc[leveloffset=+2]
include::build_scans.adoc[leveloffset=+2]

// Writing Build Scripts
include::gradle_directories_intermediate.adoc[leveloffset=+2]
include::multi_project_builds_intermediate.adoc[leveloffset=+2]
include::build_lifecycle_intermediate.adoc[leveloffset=+2]
include::writing_build_scripts_intermediate.adoc[leveloffset=+2]
include::gradle_managed_types_intermediate.adoc[leveloffset=+2]
include::dependencies_intermediate.adoc[leveloffset=+2]
include::writing_tasks_intermediate.adoc[leveloffset=+2]
include::plugins_intermediate.adoc[leveloffset=+2]

// Creating Plugins
include::plugin_introduction_advanced.adoc[leveloffset=+2]
include::pre_compiled_script_plugin_advanced.adoc[leveloffset=+2]
include::binary_plugin_advanced.adoc[leveloffset=+2]
include::developing_binary_plugin_advanced.adoc[leveloffset=+2]
include::testing_binary_plugin_advanced.adoc[leveloffset=+2]
include::publishing_binary_plugin_advanced.adoc[leveloffset=+2]

[[part:best_practices]]
== BEST PRACTICES

include::best_practices.adoc[leveloffset=+2]
include::best_practices_index.adoc[leveloffset=+2]
include::best_practices_general.adoc[leveloffset=+2]
include::best_practices_structuring_builds.adoc[leveloffset=+2]
include::best_practices_dependencies.adoc[leveloffset=+2]
include::best_practices_tasks.adoc[leveloffset=+2]
include::best_practices_performance.adoc[leveloffset=+2]
include::best_practices_security.adoc[leveloffset=+2]
include::best_practices_testing.adoc[leveloffset=+2]

[[part:reference]]
== RUNTIME AND CONFIGURATION

include::command_line_interface.adoc[leveloffset=+2]
include::logging.adoc[leveloffset=+2]
include::gradle_wrapper.adoc[leveloffset=+2]
include::gradle_daemon.adoc[leveloffset=+2]
include::directory_layout.adoc[leveloffset=+2]
include::build_environment.adoc[leveloffset=+2]
include::build_lifecycle.adoc[leveloffset=+2]
include::inspect.adoc[leveloffset=+2]
include::continuous_builds.adoc[leveloffset=+2]
include::file_system_watching.adoc[leveloffset=+2]

== DSLS AND APIS

=== Groovy

include::groovy_build_script_primer.adoc[leveloffset=+3]

=== Kotlin

include::kotlin_dsl.adoc[leveloffset=+3]
include::migrating_from_groovy_to_kotlin_dsl.adoc[leveloffset=+3]

=== General

include::public_apis.adoc[leveloffset=+3]
include::default_script_imports.adoc[leveloffset=+3]

== CORE PLUGINS

include::plugin_reference.adoc[leveloffset=2]

// JVM Plugins
include::java_plugin.adoc[leveloffset=+2]
include::java_library_plugin.adoc[leveloffset=+2]
include::java_platform_plugin.adoc[leveloffset=+2]
include::groovy_plugin.adoc[leveloffset=+2]
include::scala_plugin.adoc[leveloffset=+2]
include::antlr_plugin.adoc[leveloffset=+2]
include::jvm_test_suite_plugin.adoc[leveloffset=+2]
include::test_report_aggregation_plugin.adoc[leveloffset=+2]

// Native Plugins
include::cpp_application_plugin.adoc[leveloffset=+2]
include::cpp_library_plugin.adoc[leveloffset=+2]
include::cpp_unit_test_plugin.adoc[leveloffset=+2]
include::swift_application_plugin.adoc[leveloffset=+2]
include::swift_library_plugin.adoc[leveloffset=+2]
include::xctest_plugin.adoc[leveloffset=+2]

// Packaging/Distribution Plugins
include::application_plugin.adoc[leveloffset=+2]
include::war_plugin.adoc[leveloffset=+2]
include::ear_plugin.adoc[leveloffset=+2]
include::distribution_plugin.adoc[leveloffset=+2]
include::java_library_distribution_plugin.adoc[leveloffset=+2]

// Code Analysis Plugins
include::checkstyle_plugin.adoc[leveloffset=+2]
include::pmd_plugin.adoc[leveloffset=+2]
include::jacoco_plugin.adoc[leveloffset=+2]
include::jacoco_report_aggregation_plugin.adoc[leveloffset=+2]
include::codenarc_plugin.adoc[leveloffset=+2]

// IDE Integration Plugins
include::eclipse_plugin.adoc[leveloffset=+2]
include::idea_plugin.adoc[leveloffset=+2]
include::visual_studio_plugin.adoc[leveloffset=+2]
include::xcode_plugin.adoc[leveloffset=+2]

// Utility Plugins
include::base_plugin.adoc[leveloffset=+2]
include::build_init_plugin.adoc[leveloffset=+2]
include::signing_plugin.adoc[leveloffset=+2]
include::java_gradle_plugin.adoc[leveloffset=+2]
include::project_report_plugin.adoc[leveloffset=+2]
include::build_dashboard_plugin.adoc[leveloffset=+2]

== TASK DEVELOPMENT

include::more_about_tasks.adoc[leveloffset=+2]
include::controlling_task_execution.adoc[leveloffset=+2]
include::organizing_tasks.adoc[leveloffset=+2]
include::implementing_custom_tasks.adoc[leveloffset=+2]
include::lazy_configuration.adoc[leveloffset=+2]
include::worker_api.adoc[leveloffset=+2]
include::custom_tasks.adoc[leveloffset=+2]
include::build_services.adoc[leveloffset=+2]
include::task_configuration_avoidance.adoc[leveloffset=+2]

== PLUGIN DEVELOPMENT

include::plugins.adoc[leveloffset=+2]
include::implementing_gradle_plugins_precompiled.adoc[leveloffset=+2]
include::implementing_gradle_plugins_convention.adoc[leveloffset=+2]
include::implementing_gradle_plugins_binary.adoc[leveloffset=+2]
include::testing_gradle_plugins.adoc[leveloffset=+2]
include::preparing_to_publish.adoc[leveloffset=+2]
include::publishing_gradle_plugins.adoc[leveloffset=+2]
include::reporting_problems.adoc[leveloffset=+2]
include::init_scripts.adoc[leveloffset=+2]
include::test_kit.adoc[leveloffset=+2]

== DEPENDENCY MANAGEMENT

// Getting Started
include::getting_started_dep_man.adoc[leveloffset=+2]

// Learning the Basics
include::declaring_dependencies.adoc[leveloffset=+2]
include::dependency_configurations.adoc[leveloffset=+2]
include::declaring_repositories.adoc[leveloffset=+2]
include::centralizing_dependencies.adoc[leveloffset=+2]
include::dependency_constraints_conflicts.adoc[leveloffset=+2]

// Declaring Dependencies (detailed)
include::declaring_dependencies_basics.adoc[leveloffset=+2]
include::viewing_debugging_dependencies.adoc[leveloffset=+2]
include::dependency_versions.adoc[leveloffset=+2]
include::dependency_constraints.adoc[leveloffset=+2]
include::declaring_configurations.adoc[leveloffset=+2]
include::gradle_dependencies.adoc[leveloffset=+2]

// Declaring Repositories (detailed)
include::declaring_repositories_basics.adoc[leveloffset=+2]
include::centralizing_repositories.adoc[leveloffset=+2]
include::supported_repository_types.adoc[leveloffset=+2]
include::supported_metadata_formats.adoc[leveloffset=+2]
include::supported_repository_protocols.adoc[leveloffset=+2]
include::filtering_repository_content.adoc[leveloffset=+2]

// Centralizing Dependencies
include::platforms.adoc[leveloffset=+2]
include::version_catalogs.adoc[leveloffset=+2]
include::centralizing_catalog_platform.adoc[leveloffset=+2]

// Controlling Dependency Resolution
include::dependency_resolution_consistency.adoc[leveloffset=+2]
include::resolving_specific_artifacts.adoc[leveloffset=+2]
include::component_capabilities.adoc[leveloffset=+2]
include::variant_attributes.adoc[leveloffset=+2]
include::artifact_views.adoc[leveloffset=+2]
include::artifact_transforms.adoc[leveloffset=+2]

// Managing Dependencies
include::dependency_locking.adoc[leveloffset=+2]
include::resolution_rules.adoc[leveloffset=+2]
include::component_metadata_rules.adoc[leveloffset=+2]
include::dependency_caching.adoc[leveloffset=+2]

// Advanced Concepts
include::dependency_resolution.adoc[leveloffset=+2]
include::graph_resolution.adoc[leveloffset=+2]
include::variant_aware_resolution.adoc[leveloffset=+2]
include::artifact_resolution.adoc[leveloffset=+2]

// Publishing Libraries
include::publishing_setup.adoc[leveloffset=+2]
include::publishing_gradle_module_metadata.adoc[leveloffset=+2]
include::publishing_signing.adoc[leveloffset=+2]
include::publishing_customization.adoc[leveloffset=+2]
include::publishing_maven.adoc[leveloffset=+2]
include::publishing_ivy.adoc[leveloffset=+2]

== GRADLE MANAGED TYPES

include::lazy_eager_evaluation.adoc[leveloffset=+2]
include::properties_providers.adoc[leveloffset=+2]
include::collections.adoc[leveloffset=+2]
include::service_injection.adoc[leveloffset=+2]
include::dataflow_actions.adoc[leveloffset=+2]
include::working_with_files.adoc[leveloffset=+2]

== JVM BUILDS

include::building_java_projects.adoc[leveloffset=+2]
include::java_testing.adoc[leveloffset=+2]

// Java Toolchains
include::toolchains.adoc[leveloffset=+2]
include::toolchain_plugins.adoc[leveloffset=+2]

include::dependency_management_for_java_projects.adoc[leveloffset=+2]

== C++ BUILDS

include::building_cpp_projects.adoc[leveloffset=+2]
include::cpp_testing.adoc[leveloffset=+2]
include::native_software.adoc[leveloffset=+2]

== SWIFT BUILDS

include::building_swift_projects.adoc[leveloffset=+2]
include::swift_testing.adoc[leveloffset=+2]

[[part:gradle_on_ci]]
== GRADLE ON CI

include::gradle_on_ci.adoc[leveloffset=+2]
include::github-actions.adoc[leveloffset=+2]
include::gitlab-ci.adoc[leveloffset=+2]
include::jenkins.adoc[leveloffset=+2]
include::teamcity.adoc[leveloffset=+2]
include::travis-ci.adoc[leveloffset=+2]

== STRUCTURING BUILDS

include::organizing_gradle_projects.adoc[leveloffset=+2]
include::multi_project_builds.adoc[leveloffset=+2]
include::sharing_build_logic_between_subprojects.adoc[leveloffset=+2]
include::composite_builds.adoc[leveloffset=+2]
include::configuration_on_demand.adoc[leveloffset=+2]

[[part:optimizing_build_times]]
== OPTIMIZING GRADLE BUILDS

include::performance.adoc[leveloffset=+2]

// Build Cache
include::build_cache.adoc[leveloffset=+2]
include::build_cache_use_cases.adoc[leveloffset=+2]
include::build_cache_performance.adoc[leveloffset=+2]
include::build_cache_concepts.adoc[leveloffset=+2]
include::caching_java_projects.adoc[leveloffset=+2]
include::caching_android_projects.adoc[leveloffset=+2]
include::build_cache_debugging.adoc[leveloffset=+2]
include::common_caching_problems.adoc[leveloffset=+2]

// Configuration Cache
include::configuration_cache.adoc[leveloffset=+2]
include::configuration_cache_enabling.adoc[leveloffset=+2]
include::configuration_cache_requirements.adoc[leveloffset=+2]
include::configuration_cache_debugging.adoc[leveloffset=+2]
include::configuration_cache_status.adoc[leveloffset=+2]

// Isolated Projects
include::isolated_projects.adoc[leveloffset=+2]

[[part:securing_builds]]
== SECURING BUILDS

include::security.adoc[leveloffset=+2]
include::dependency_verification.adoc[leveloffset=+2]

[[part:integration]]
== INTEGRATION

include::third_party_integration.adoc[leveloffset=+2]

// APIs
include::tooling_api.adoc[leveloffset=+2]
include::test_reporting_api.adoc[leveloffset=+2]
