# PluginManager

API Documentation: | `PluginManager`

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

### Properties

No properties

### Methods

Method | Description
`apply(type)` | Applies the given plugin. Does nothing if the plugin has already been applied.
`apply(pluginId)` | Applies the plugin with the given ID. Does nothing if the plugin has already been applied.
`findPlugin(id)` | 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)` | Returns `true` if a plugin with the given ID has already been applied, otherwise `false`.
`withPlugin(id, action)` | Executes the given action when the specified plugin is applied.

### Script blocks

No script blocks

### Method details

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

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)

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)

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)

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

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

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.