# Interface DependencyConstraint

All Superinterfaces:
  `HasAttributes, HasConfigurableAttributes<DependencyConstraint>, ModuleVersionSelector`

public interface DependencyConstraint extends ModuleVersionSelector, HasConfigurableAttributes<DependencyConstraint>
Represents a constraints over all, including transitive, dependencies.

Since:
  4.5

- ## Method Summary

  Modifier and Type
  Method
  Description
  `DependencyConstraint`
  `attributes(Action<? super AttributeContainer> configureAction)`
  Mutates the attributes of this constraint.
  `void`
  `because(@Nullable String reason)`
  Sets the reason why this dependency constraint should be used.
  `AttributeContainer`
  `getAttributes()`
  Returns the attributes for this constraint.
  `@Nullable String`
  `getReason()`
  Returns a reason why this dependency constraint should be used, in particular with regards to its version.
  `VersionConstraint`
  `getVersionConstraint()`
  Returns the version constraint to be used during selection.
  `void`
  `version(Action<? super MutableVersionConstraint> configureAction)`
  Configures the version constraint for this dependency constraint.

  ### Methods inherited from interface ModuleVersionSelector

  `getGroup, getModule, getName, getVersion, matchesStrictly`

- ## Method Details

  - ### version

    void version(Action<? super MutableVersionConstraint> configureAction)
    Configures the version constraint for this dependency constraint.
    Parameters:
      `configureAction` - the configuration action for the module version
    Since:
      4.5

  - ### getReason

    @Nullable String getReason()
    Returns a reason why this dependency constraint should be used, in particular with regards to its version. The dependency report will use it to explain why a specific dependency was selected, or why a specific dependency version was used.
    Returns:
      a reason to use this dependency constraint
    Since:
      4.6

  - ### because

    void because(@Nullable String reason)
    Sets the reason why this dependency constraint should be used.
    Since:
      4.6

  - ### getAttributes

    AttributeContainer getAttributes()
    Returns the attributes for this constraint. Mutation of the attributes of a constraint must be done through the `attributes(Action)` method.
    Specified by:
      `getAttributes` in interface `HasAttributes`
    Returns:
      the attributes container for this dependency
    Since:
      4.8

  - ### attributes

    DependencyConstraint attributes(Action<? super AttributeContainer> configureAction)
    Mutates the attributes of this constraint. Attributes are used during dependency resolution to select the appropriate target variant, in particular when a single component provides different variants.
    Specified by:
      `attributes` in interface `HasConfigurableAttributes<DependencyConstraint>`
    Parameters:
      `configureAction` - the attributes mutation action
    Since:
      4.8

  - ### getVersionConstraint

    VersionConstraint getVersionConstraint()
    Returns the version constraint to be used during selection.
    Returns:
      the version constraint
    Since:
      4.5