# Class GradlePluginDevelopmentExtension

java.lang.Object
org.gradle.plugin.devel.GradlePluginDevelopmentExtension

public abstract class GradlePluginDevelopmentExtension extends Object
Configuration options for the `JavaGradlePluginPlugin`.

Below is a full configuration example. Since all properties have sensible defaults, typically only selected properties will be configured.

        plugins {
            id 'java-gradle-plugin'
        }

        sourceSets {
            functionalTest
        }

        gradlePlugin {
            testSourceSets project.sourceSets.functionalTest
            plugins {
                helloPlugin {
                    id  = 'org.example.hello'
                    implementationClass = 'org.example.HelloPlugin'
                }
            }
        }

Since:
  2.13
See Also:
  - `JavaGradlePluginPlugin`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GradlePluginDevelopmentExtension(Project project, SourceSet pluginSourceSet, SourceSet testSourceSet)`
  Creates a new `GradlePluginDevelopmentExtension`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract NamedDomainObjectContainer<PluginDeclaration>`
  `getPlugins()`
  Returns the declared plugins.
  `SourceSet`
  `getPluginSourceSet()`
  Returns the source set that compiles the code under test.
  `Set<SourceSet>`
  `getTestSourceSets()`
  Returns the source sets executing the functional tests with TestKit.
  `abstract Property<String>`
  `getVcsUrl()`
  Returns the property holding the URL for the plugin's VCS repository.
  `abstract Property<String>`
  `getWebsite()`
  Returns the property holding the URL for the plugin's website.
  `boolean`
  `isAutomatedPublishing()`
  Whether the plugin should automatically configure the publications for the plugins.
  `void`
  `plugins(Action<? super NamedDomainObjectContainer<PluginDeclaration>> action)`
  Configures the declared plugins.
  `void`
  `setAutomatedPublishing(boolean automatedPublishing)`
  Configures whether the plugin should automatically configure the publications for the plugins.
  `void`
  `testSourceSet(SourceSet testSourceSet)`
  Adds some source sets to the collection which will be using TestKit.
  `void`
  `testSourceSets(SourceSet... testSourceSets)`
  Provides the source sets executing the functional tests with TestKit.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### GradlePluginDevelopmentExtension

    public GradlePluginDevelopmentExtension(Project project, SourceSet pluginSourceSet, SourceSet testSourceSet)
    Creates a new `GradlePluginDevelopmentExtension`.
    Since:
      2.14

- ## Method Details

  - ### testSourceSet

    @Incubating public void testSourceSet(SourceSet testSourceSet)
    Adds some source sets to the collection which will be using TestKit. Calling this method multiple times with different source sets is additive - this method will add to the existing collection of source sets.
    Parameters:
      `testSourceSet` - the test source set to add
    Since:
      7.4

  - ### testSourceSets

    public void testSourceSets(SourceSet... testSourceSets)
    Provides the source sets executing the functional tests with TestKit.

    Calling this method multiple times with different source sets is NOT additive. Calling this method will overwrite any existing test source sets with the provided arguments.

    Parameters:
      `testSourceSets` - the test source sets
    Since:
      2.13

  - ### getPluginSourceSet

    public SourceSet getPluginSourceSet()
    Returns the source set that compiles the code under test. Defaults to `project.sourceSets.main`.
    Returns:
      the plugin source set
    Since:
      2.13

  - ### getTestSourceSets

    public Set<SourceSet> getTestSourceSets()
    Returns the source sets executing the functional tests with TestKit. Defaults to `project.sourceSets.test`.
    Returns:
      the test source sets
    Since:
      2.13

  - ### getWebsite

    public abstract Property<String> getWebsite()
    Returns the property holding the URL for the plugin's website.
    Since:
      7.6

  - ### getVcsUrl

    public abstract Property<String> getVcsUrl()
    Returns the property holding the URL for the plugin's VCS repository.
    Since:
      7.6

  - ### getPlugins

    public abstract NamedDomainObjectContainer<PluginDeclaration> getPlugins()
    Returns the declared plugins.
    Returns:
      the declared plugins, never null
    Since:
      2.14

  - ### plugins

    public void plugins(Action<? super NamedDomainObjectContainer<PluginDeclaration>> action)
    Configures the declared plugins.
    Parameters:
      `action` - the configuration action to invoke on the plugins
    Since:
      2.14

  - ### isAutomatedPublishing

    public boolean isAutomatedPublishing()
    Whether the plugin should automatically configure the publications for the plugins.
    Returns:
      true if publishing should be automated, false otherwise
    Since:
      2.14

  - ### setAutomatedPublishing

    public void setAutomatedPublishing(boolean automatedPublishing)
    Configures whether the plugin should automatically configure the publications for the plugins.
    Parameters:
      `automatedPublishing` - whether to automated publication
    Since:
      2.14