Package org.gradle.api.artifacts

## Interface ComponentMetadataDetails

- All Superinterfaces:
    `ComponentMetadata`, `HasAttributes`, `HasConfigurableAttributes<ComponentMetadataDetails>`

      @NonExtensible
      public interface ComponentMetadataDetails
      extends ComponentMetadata, HasConfigurableAttributes<ComponentMetadataDetails>

  Describes a resolved component's metadata, which typically originates from a component descriptor (Ivy file, Maven POM). Some parts of the metadata can be changed via metadata rules (see `ComponentMetadataHandler`.
  Since:
    1.8

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addVariant​(java.lang.String name, java.lang.String base, Action<? super VariantMetadata> action)` | Add a rule for adding a new variant to the component.
    `void` | `addVariant​(java.lang.String name, Action<? super VariantMetadata> action)` | Add a rule for adding a new empty variant to the component.
    `void` | `allVariants​(Action<? super VariantMetadata> action)` | Add a rule for adjusting all variants of a component.
    `void` | `belongsTo​(java.lang.Object notation)` | Declares that this component belongs to a virtual platform, which should be considered during dependency resolution.
    `void` | `belongsTo​(java.lang.Object notation, boolean virtual)` | Declares that this component belongs to a platform, which should be considered during dependency resolution.
    `void` | `maybeAddVariant​(java.lang.String name, java.lang.String base, Action<? super VariantMetadata> action)` | This is the lenient version of `addVariant(String, String, Action)`.
    `void` | `setChanging​(boolean changing)` | Sets whether the component is changing or immutable.
    `void` | `setStatus​(java.lang.String status)` | Sets the status of the component.
    `void` | `setStatusScheme​(java.util.List<java.lang.String> statusScheme)` | Sets the status scheme of the component.
    `void` | `withVariant​(java.lang.String name, Action<? super VariantMetadata> action)` | Add a rule for adjusting an existing variant of the component.

    - ### Methods inherited from interface org.gradle.api.artifacts.ComponentMetadata

      `getId, getStatus, getStatusScheme, isChanging`

    - ### Methods inherited from interface org.gradle.api.attributes.HasAttributes

      `getAttributes`

    - ### Methods inherited from interface org.gradle.api.attributes.HasConfigurableAttributes

      `attributes`

- - ### Method Detail

    - #### setChanging

          void setChanging​(boolean changing)

      Sets whether the component is changing or immutable.
      Parameters:
        `changing` - whether the component is changing or immutable

    - #### setStatus

          void setStatus​(java.lang.String status)

      Sets the status of the component. Must match one of the values in `ComponentMetadata.getStatusScheme()`.
      Parameters:
        `status` - the status of the component

    - #### setStatusScheme

          void setStatusScheme​(java.util.List<java.lang.String> statusScheme)

      Sets the status scheme of the component. Values are ordered from least to most mature status.
      Parameters:
        `statusScheme` - the status scheme of the component

    - #### withVariant

          void withVariant​(java.lang.String name,
                           Action<? super VariantMetadata> action)

      Add a rule for adjusting an existing variant of the component.
      Parameters:
        `name` - name of the variant to adjust (e.g. 'compile')
        `action` - the action to modify the variant
      Since:
        4.4

    - #### allVariants

          void allVariants​(Action<? super VariantMetadata> action)

      Add a rule for adjusting all variants of a component.
      Parameters:
        `action` - the action to be executed on each variant.
      Since:
        4.5

    - #### addVariant

          void addVariant​(java.lang.String name,
                          Action<? super VariantMetadata> action)

      Add a rule for adding a new empty variant to the component.
      Parameters:
        `name` - a name for the variant
        `action` - the action to populate the variant
      Since:
        6.0

    - #### addVariant

          void addVariant​(java.lang.String name,
                          java.lang.String base,
                          Action<? super VariantMetadata> action)

      Add a rule for adding a new variant to the component. The new variant will be based on an existing variant or configurations of the component and initialized with the same attributes, capabilities, dependencies and artifacts. These can then be modified in the given configuration action. Whether the 'base' is already a variant (with attributes) or a plain configuration (without attributes) depends on the metadata source:
      - Gradle Module Metadata: all variants defined in the metadata are available as base
      - POM Metadata: the 'compile' and 'runtime' variants with the Java ecosystem attributes are available as base
      - Ivy Metadata: all configurations defined in the metadata are available as base
      Note: files (artifacts) are not initialized automatically and always need to be added through `VariantMetadata.withFiles(Action)`.
      Parameters:
        `name` - a name for the variant
        `base` - name of the variant (pom or Gradle module metadata) or configuration (ivy.xml metadata) from which the new variant will be initialized
        `action` - the action to populate the variant
      Since:
        6.0

    - #### maybeAddVariant

          void maybeAddVariant​(java.lang.String name,
                               java.lang.String base,
                               Action<? super VariantMetadata> action)

      This is the lenient version of `addVariant(String, String, Action)`. The only difference is that this will do nothing (instead of throwing an error), if the 'base' variant does not exist for a component. This is particularly useful for rules that are applied to `ComponentMetadataHandler.all(Class)` components.
      Parameters:
        `name` - a name for the variant
        `base` - name of the variant (pom or Gradle module metadata) or configuration (ivy.xml metadata) from which the new variant will be initialized
        `action` - the action to populate the variant
      Since:
        6.1

    - #### belongsTo

          void belongsTo​(java.lang.Object notation)

      Declares that this component belongs to a virtual platform, which should be considered during dependency resolution.
      Parameters:
        `notation` - the coordinates of the owner
      Since:
        4.10

    - #### belongsTo

          void belongsTo​(java.lang.Object notation,
                         boolean virtual)

      Declares that this component belongs to a platform, which should be considered during dependency resolution.
      Parameters:
        `notation` - the coordinates of the owner
        `virtual` - must be set to true if the platform is a virtual platform, or false if it's a published platform
      Since:
        5.0