org.gradle.api.artifacts.dsl

## Interface ComponentMetadataHandler

-     @Incubating
      public interface ComponentMetadataHandler

  Allows to modify the metadata of depended-on software components.

  Example:

       dependencies {
           components {
               //triggered during dependency resolution, for each component:
               eachComponent { ComponentMetadataDetails details ->
                   if (details.id.group == "org.foo") {
                       def version = details.id.version
                       // assuming status is last part of version string
                       details.status = version.substring(version.lastIndexOf("-") + 1)
                       details.statusScheme = ["bronze", "silver", "gold", "platinum"]
                   }
               }
           }
       }

  Since:
    1.8

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `eachComponent(Action<? super ComponentMetadataDetails> rule)` Adds a rule to modify the metadata of depended-on software components.
    `void` | `eachComponent(Closure<?> rule)` Adds a rule to modify the metadata of depended-on software components.

- - ### Method Detail

    - #### eachComponent

          void eachComponent(Action<? super ComponentMetadataDetails> rule)

      Adds a rule to modify the metadata of depended-on software components. For example, this allows to set a component's status and status scheme from within the build script, overriding any value specified in the component descriptor.
      Parameters:
        `rule` - the rule to be added

    - #### eachComponent

          void eachComponent(Closure<?> rule)

      Adds a rule to modify the metadata of depended-on software components. For example, this allows to set a component's status and status scheme from within the build script, overriding any value specified in the component descriptor.

      The rule must declare a `ComponentMetadataDetails` as it's first parameter, allowing the component metadata to be modified.

      In addition, the rule can declare additional (read-only) parameters, which may provide extra details about the component. The order of these additional parameters is irrelevant.

      Presently, the following additional parameter types are supported:

      - `IvyModuleDescriptor` Additional Ivy-specific metadata. Rules declaring this parameter will only be invoked for components packaged as an Ivy module.
      Parameters:
        `rule` - the rule to be added