PluginAware (Gradle API 2.14)
Date: 2016-06-14

Package: org.gradle.api.plugins

## [Java] Interface PluginAware

- Something that can have plugins applied to it.

  The plugin manager can be used for applying and detecting whether plugins have been applied.

  For more on writing and applying plugins, see Plugin.

- - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `void` | `apply(groovy.lang.Closure closure)` Applies zero or more plugins or scripts.
    `void` | `apply(Action<? super ObjectConfigurationAction> action)` Applies zero or more plugins or scripts.
    `void` | `apply(Map<String, ?> options)` Applies a plugin or script, using the given options provided as a map.
    `PluginManager` | `getPluginManager()` The plugin manager for this plugin aware object.
    `PluginContainer` | `getPlugins()` The container of plugins that have been applied to this object.

- - ### Method Detail

    - #### public void apply(groovy.lang.Closure closure)

      Applies zero or more plugins or scripts.

      The given closure is used to configure an ObjectConfigurationAction, which “builds” the plugin application.

      This method differs from apply(java.util.Map) in that it allows methods of the configuration action to be invoked more than once.

      Parameters:
        `closure` - the closure to configure an ObjectConfigurationAction with before “executing” it
      See Also:
        apply(java.util.Map)

    - #### public void apply(Action<? super ObjectConfigurationAction> action)

      Applies zero or more plugins or scripts.

      The given closure is used to configure an ObjectConfigurationAction, which “builds” the plugin application.

      This method differs from apply(java.util.Map) in that it allows methods of the configuration action to be invoked more than once.

      Parameters:
        `action` - the action to configure an ObjectConfigurationAction with before “executing” it
      See Also:
        apply(java.util.Map)

    - #### public void apply(Map<String, ?> options)

      Applies a plugin or script, using the given options provided as a map. Does nothing if the plugin has already been applied.

      The given map is applied as a series of method calls to a newly created ObjectConfigurationAction. That is, each key in the map is expected to be the name of a method ObjectConfigurationAction and the value to be compatible arguments to that method.

      The following options are available:

      - `from`: A script to apply. Accepts any path supported by Project.uri.
      - `plugin`: The id or implementation class of the plugin to apply.
      - `to`: The target delegate object or objects. The default is this plugin aware object. Use this to configure objects other than this object.
      Parameters:
        `options` - the options to use to configure and ObjectConfigurationAction before “executing” it

    - #### @Incubating public PluginManager getPluginManager()

      The plugin manager for this plugin aware object.

      Returns:
        the plugin manager
      Since:
        2.3

    - #### public PluginContainer getPlugins()

      The container of plugins that have been applied to this object.

      While not deprecated, it is preferred to use the methods of this interface or the plugin manager than use the plugin container.

      Use one of the 'apply' methods on this interface or on the plugin manager to apply plugins instead of applying via the plugin container.

      Use PluginManager.hasPlugin or similar to query for the application of plugins instead of doing so via the plugin container.

      Returns:
        the plugin container
      See Also:
        apply
        PluginManager.hasPlugin