# PluginManager

API Documentation: | `PluginManager`

Note: This class is incubating and may change in a future version of Gradle.

Facilitates applying plugins and determining which plugins have been applied to a `PluginAware` object.

### Properties

No properties

### Methods

Method | Description
`apply(type)` | Incubating Applies the given plugin. Does nothing if the plugin has already been applied.
`apply(pluginId)` | Incubating Applies the plugin with the given ID. Does nothing if the plugin has already been applied.
`findPlugin(id)` | Incubating Returns the information about the plugin that has been applied with the given ID, or null if no plugin has been applied with the given ID.
`hasPlugin(id)` | Incubating Returns `true` if a plugin with the given ID has already been applied, otherwise `false`.
`withPlugin(id, action)` | Incubating Executes the given action when the specified plugin is applied.

### Script blocks

No script blocks

### Method details

#### `void` `apply`(``Class`<?>` type)

Note: This method is incubating and may change in a future version of Gradle.

Applies the given plugin. Does nothing if the plugin has already been applied.

The given class should implement the `Plugin` interface, and be parameterized for a compatible type of `this`.

The following two lines are equivalent…

    pluginManager.apply org.gradle.api.plugins.JavaPlugin
    pluginManager.apply "org.gradle.java"

#### `void` `apply`(`String` pluginId)

Note: This method is incubating and may change in a future version of Gradle.

Applies the plugin with the given ID. Does nothing if the plugin has already been applied.

Plugins in the `"org.gradle"` namespace can be applied directly via name. That is, the following two lines are equivalent…

    pluginManager.apply "org.gradle.java"
    pluginManager.apply "java"

#### `AppliedPlugin` `findPlugin`(`String` id)

Note: This method is incubating and may change in a future version of Gradle.

Returns the information about the plugin that has been applied with the given ID, or null if no plugin has been applied with the given ID.

Plugins in the `"org.gradle"` namespace (that is, core Gradle plugins) can be specified by either name (e.g. `"java"`) or ID `"org.gradle.java"`. All other plugins must be queried for by their full ID (e.g. `"org.company.some-plugin"`).

Some Gradle plugins have not yet migrated to fully qualified plugin IDs. Such plugins can be detected with this method by simply using the unqualified ID (e.g. `"some-third-party-plugin"`.

#### `boolean` `hasPlugin`(`String` id)

Note: This method is incubating and may change in a future version of Gradle.

Returns `true` if a plugin with the given ID has already been applied, otherwise `false`.

#### `void` `withPlugin`(`String` id, ``Action`<? super `AppliedPlugin`>` action)

Note: This method is incubating and may change in a future version of Gradle.

Executes the given action when the specified plugin is applied.

If a plugin with the specified ID has already been applied, the supplied action will be executed immediately. Otherwise, the action will executed immediately after a plugin with the specified ID is applied.

The given action is always executed after the plugin has been applied.