# Interface Plugin<T>

Type Parameters:
  `T` - The type of object which this plugin can configure.

All Known Implementing Classes:
  `org.gradle.api.plugins.quality.internal.AbstractCodeQualityPlugin, AntlrPlugin, ApplicationPlugin, AssemblerLangPlugin, AssemblerPlugin, BasePlugin, BinaryBasePlugin, BuildDashboardPlugin, BuildInitPlugin, CheckstylePlugin, ClangCompilerPlugin, CLangPlugin, CodeNarcPlugin, ComponentBasePlugin, ComponentModelBasePlugin, CPlugin, CppApplicationPlugin, CppBasePlugin, CppLangPlugin, CppLibraryPlugin, CppPlugin, CppUnitTestPlugin, CUnitConventionPlugin, CUnitPlugin, DistributionBasePlugin, DistributionPlugin, EarPlugin, EclipsePlugin, EclipseWtpPlugin, GccCompilerPlugin, GoogleTestConventionPlugin, GoogleTestPlugin, GroovyBasePlugin, GroovyPlugin, HelpTasksPlugin, IdeaPlugin, org.gradle.plugins.ide.internal.IdePlugin, IvyPluginPublishingPlugin, IvyPublishPlugin, JacocoPlugin, JacocoReportAggregationPlugin, JavaBasePlugin, JavaGradlePluginPlugin, JavaLibraryDistributionPlugin, JavaLibraryPlugin, JavaPlatformPlugin, JavaPlugin, JavaTestFixturesPlugin, JvmEcosystemPlugin, JvmTestSuitePlugin, JvmToolchainManagementPlugin, JvmToolchainsPlugin, LanguageBasePlugin, LifecycleBasePlugin, MavenPluginPublishPlugin, MavenPublishPlugin, MicrosoftVisualCppCompilerPlugin, NativeBasePlugin, NativeBinariesTestPlugin, NativeComponentModelPlugin, NativeComponentPlugin, NativeTestingBasePlugin, ObjectiveCLangPlugin, ObjectiveCPlugin, ObjectiveCppLangPlugin, ObjectiveCppPlugin, PmdPlugin, ProjectReportsPlugin, PublishingPlugin, ReportingBasePlugin, ScalaBasePlugin, ScalaPlugin, SigningPlugin, SoftwareReportingTasksPlugin, SwiftApplicationPlugin, SwiftBasePlugin, SwiftCompilerPlugin, SwiftLibraryPlugin, SwiftPackageManagerExportPlugin, TestingBasePlugin, TestingModelBasePlugin, TestReportAggregationPlugin, TestSuiteBasePlugin, VersionCatalogPlugin, VisualStudioPlugin, WarPlugin, WindowsResourceScriptPlugin, WindowsResourcesPlugin, WrapperPlugin, XcodePlugin, XCTestConventionPlugin`

public interface Plugin<T>

A `Plugin` represents an extension to Gradle. A plugin applies some configuration to a target object. Usually, this target object is a `Project`, but plugins can be applied to any type of objects.

Since:
  0.7

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `apply(T target)`
  Apply this plugin to the given target object.

- ## Method Details

  - ### apply

    void apply(T target)
    Apply this plugin to the given target object.
    Parameters:
      `target` - The target object
    Since:
      0.9