// 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>>::
Provides support for building any type of Java project.

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

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

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

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

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

[[native_languages]]
== Native languages

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

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

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

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

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

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

== Packaging and distribution

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

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

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

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

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

<<maven_plugin.adoc#,Legacy Maven Plugin>>::
Provides support for publishing artifacts using the <<artifact_management.adoc#,legacy mechanism>> to Maven-compatible repositories.

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

<<java_library_distribution_plugin.adoc#,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>>::
Performs quality checks on your project’s Java source files using http://checkstyle.sourceforge.net/index.html[Checkstyle] and generates associated reports.

<<pmd_plugin.adoc#,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>>::
Provides code coverage metrics for your Java project using http://www.eclemma.org/jacoco/[JaCoCo].

<<codenarc_plugin.adoc#,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>>::
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#,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>>::
Generates Visual Studio solution and project files for build that can be opened by the IDE.

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

== Utility

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

<<build_init_plugin.adoc#,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 https://guides.gradle.org/migrating-from-maven/[_Migrating from Maven to Gradle_] for more details.

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

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