# Interface DependencyMetadata<SELF extends DependencyMetadata>

Type Parameters:
  `SELF` - type extending this interface

All Known Subinterfaces:
  `DependencyConstraintMetadata, DirectDependencyMetadata`

public interface DependencyMetadata<SELF extends DependencyMetadata>
Describes a metadata about a dependency - direct dependency or dependency constraint - declared in a resolved component's metadata.

Since:
  4.4

- ## Method Summary

  Modifier and Type
  Method
  Description
  `SELF`
  `attributes(Action<? super AttributeContainer> configureAction)`
  Adjust the attributes of this dependency
  `SELF`
  `because(String reason)`
  Adjust the reason why this dependency should be selected.
  `AttributeContainer`
  `getAttributes()`
  Returns the attributes of this dependency.
  `String`
  `getGroup()`
  Returns the group of the module that is targeted by this dependency or dependency constraint.
  `ModuleIdentifier`
  `getModule()`
  The module identifier of the component.
  `String`
  `getName()`
  Returns the name of the module that is targeted by this dependency or dependency constraint.
  `@Nullable String`
  `getReason()`
  Returns the reason why this dependency should be selected.
  `VersionConstraint`
  `getVersionConstraint()`
  Returns the version of the module that is targeted by this dependency or dependency constraint.
  `SELF`
  `version(Action<? super MutableVersionConstraint> configureAction)`
  Adjust the version constraints of the dependency or dependency constraint.

- ## Method Details

  - ### getGroup

    String getGroup()
    Returns the group of the module that is targeted by this dependency or dependency constraint. The group allows the definition of modules of the same name in different organizations or contexts.

  - ### getName

    String getName()
    Returns the name of the module that is targeted by this dependency or dependency constraint.

  - ### getVersionConstraint

    VersionConstraint getVersionConstraint()
    Returns the version of the module that is targeted by this dependency or dependency constraint. which usually expresses what API level of the module you are compatible with.
    Since:
      4.5

  - ### version

    SELF version(Action<? super MutableVersionConstraint> configureAction)
    Adjust the version constraints of the dependency or dependency constraint.
    Parameters:
      `configureAction` - modify version details
    Since:
      4.5

  - ### getReason

    @Nullable String getReason()
    Returns the reason why this dependency should be selected.
    Returns:
      the reason, or null if no reason is found in metadata.
    Since:
      4.6

  - ### because

    SELF because(String reason)
    Adjust the reason why this dependency should be selected.
    Parameters:
      `reason` - modified reason
    Since:
      4.6

  - ### getAttributes

    AttributeContainer getAttributes()
    Returns the attributes of this dependency.
    Returns:
      the attributes of this dependency
    Since:
      4.8

  - ### attributes

    SELF attributes(Action<? super AttributeContainer> configureAction)
    Adjust the attributes of this dependency
    Since:
      4.8

  - ### getModule

    ModuleIdentifier getModule()
    The module identifier of the component. Returns the same information as `getGroup()` and `getName()`.
    Returns:
      the module identifier
    Since:
      4.9