// Copyright 2018 the original author or authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.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.

[[plugin_reference]]
= Gradle Plugin Reference

This page contains links and short descriptions for all the core plugins provided by Gradle itself.

== JVM languages and frameworks

<<java_plugin.adoc#java_plugin,Java>>::
Provides support for building any type of Java project.

<<java_library_plugin.adoc#java_library_plugin,Java Library>>::
Provides support for building a Java library.

<<java_platform_plugin.adoc#java_platform_plugin,Java Platform>>::
Provides support for building a Java platform.

<<groovy_plugin.adoc#groovy_plugin,Groovy>>::
Provides support for building any type of https://groovy-lang.org/[Groovy] project.

<<scala_plugin.adoc#scala_plugin,Scala>>::
Provides support for building any type of https://www.scala-lang.org/[Scala] project.

<<antlr_plugin.adoc#antlr_plugin,ANTLR>>::
Provides support for generating parsers using http://www.antlr.org/[ANTLR].

<<jvm_test_suite_plugin.adoc#jvm_test_suite_plugin,JVM Test Suite>>::
Provides support for modeling and configuring multiple test suite invocations.

<<test_report_aggregation_plugin.adoc#test_report_aggregation_plugin,Test Report Aggregation>>::
Aggregates the results of multiple link:{groovyDslPath}/org.gradle.api.tasks.testing.Test.html[Test] task invocations (potentially spanning multiple Gradle projects) into a single HTML report.

[[native_languages]]
== Native languages

<<cpp_application_plugin.adoc#cpp_application_plugin,C++ Application>>::
Provides support for building C++ applications on Windows, Linux, and macOS.

<<cpp_library_plugin.adoc#cpp_library_plugin,C++ Library>>::
Provides support for building C++ libraries on Windows, Linux, and macOS.

<<cpp_unit_test_plugin.adoc#cpp_unit_test_plugin,C++ Unit Test>>::
Provides support for building and running C++ executable-based tests on Windows, Linux, and macOS.

<<swift_application_plugin.adoc#swift_application_plugin,Swift Application>>::
Provides support for building Swift applications on Linux and macOS.

<<swift_library_plugin.adoc#swift_library_plugin,Swift Library>>::
Provides support for building Swift libraries on Linux and macOS.

<<xctest_plugin.adoc#xctest_plugin,XCTest>>::
Provides support for building and running XCTest-based tests on Linux and macOS.

== Packaging and distribution

<<application_plugin.adoc#application_plugin,Application>>::
Provides support for building JVM-based, runnable applications.

<<war_plugin.adoc#war_plugin,WAR>>::
Provides support for building and packaging WAR-based Java web applications.

<<ear_plugin.adoc#ear_plugin,EAR>>::
Provides support for building and packaging Java EE applications.

<<publishing_maven.adoc#publishing_maven,Maven Publish>>::
Provides support for <<publishing_setup.adoc#publishing_components,publishing artifacts>> to Maven-compatible repositories.

<<publishing_ivy.adoc#publishing_ivy,Ivy Publish>>::
Provides support for <<publishing_setup.adoc#publishing_components,publishing artifacts>> to Ivy-compatible repositories.

<<distribution_plugin.adoc#distribution_plugin,Distribution>>::
Makes it easy to create ZIP and tarball distributions of your project.

<<java_library_distribution_plugin.adoc#java_library_distribution_plugin,Java Library Distribution>>::
Provides support for creating a ZIP distribution of a Java library project that includes its runtime dependencies.

== Code analysis

<<checkstyle_plugin.adoc#checkstyle_plugin,Checkstyle>>::
Performs quality checks on your project’s Java source files using https://checkstyle.org/index.html[Checkstyle] and generates associated reports.

<<pmd_plugin.adoc#pmd_plugin,PMD>>::
Performs quality checks on your project’s Java source files using http://pmd.github.io/[PMD] and generates associated reports.

<<jacoco_plugin.adoc#jacoco_plugin,JaCoCo>>::
Provides code coverage metrics for your Java project using http://www.eclemma.org/jacoco/[JaCoCo].

<<jacoco_report_aggregation_plugin.adoc#jacoco_report_aggregation_plugin,JaCoCo Report Aggregation>>::
Aggregates the results of multiple JaCoCo code coverage reports (potentially spanning multiple Gradle projects) into a single HTML report.

<<codenarc_plugin.adoc#codenarc_plugin,CodeNarc>>::
Performs quality checks on your Groovy source files using http://codenarc.sourceforge.net/index.html[CodeNarc] and generates associated reports.

== IDE integration

<<eclipse_plugin.adoc#eclipse_plugin,Eclipse>>::
Generates Eclipse project files for the build that can be opened by the IDE. This set of plugins can also be used to fine tune http://projects.eclipse.org/projects/tools.buildship[Buildship's] import process for Gradle builds.

<<idea_plugin.adoc#idea_plugin,IntelliJ IDEA>>::
Generates IDEA project files for the build that can be opened by the IDE. It can also be used to fine tune IDEA's import process for Gradle builds.

<<visual_studio_plugin.adoc#visual_studio_plugin,Visual Studio>>::
Generates Visual Studio solution and project files for build that can be opened by the IDE.

<<xcode_plugin.adoc#xcode_plugin,Xcode>>::
Generates Xcode workspace and project files for the build that can be opened by the IDE.

== Utility

<<base_plugin.adoc#base_plugin,Base>>::
Provides common lifecycle tasks, such as `clean`, and other features common to most builds.

<<build_init_plugin.adoc#build_init_plugin,Build Init>>::
Generates a new Gradle build of a specified type, such as a Java library. It can also generate a build script from a Maven POM — see <<migrating_from_maven.adoc#migrating_from_maven,Migrating from Maven to Gradle>> for more details.

<<signing_plugin.adoc#signing_plugin,Signing>>::
Provides support for digitally signing generated files and artifacts.

<<java_gradle_plugin.adoc#java_gradle_plugin,Plugin Development>>::
Makes it easier to develop and publish a Gradle plugin.

<<project_report_plugin.adoc#project_report_plugin,Project Report Plugin>>::
Helps to generate reports containing useful information about your build.
