# ComponentMetadataHandler

API Documentation: | `ComponentMetadataHandler`

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

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"]
                }
            }
        }
    }

### Properties

No properties

### Methods

Method | Description
`eachComponent(rule)` | Incubating 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.
`eachComponent(rule)` | Incubating 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.

### Script blocks

No script blocks

### Method details

#### `void` `eachComponent`(``Closure`<?>` rule)

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

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.

#### `void` `eachComponent`(``Action`<? super `ComponentMetadataDetails`>` rule)

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

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.