# Interface DependencyResolveDetails

public interface DependencyResolveDetails
Provides details about a dependency when it is resolved. Provides means to manipulate dependency metadata when it is resolved.

Since:
  1.4

- ## Method Summary

  Modifier and Type
  Method
  Description
  `DependencyResolveDetails`
  `artifactSelection(Action<? super ArtifactSelectionDetails> details)`
  Configures the artifact selection for the target component of this dependency resolution rule.
  `DependencyResolveDetails`
  `because(String description)`
  Sets a human readable description for the reason the component is selected.
  `ModuleVersionSelector`
  `getRequested()`
  The module, before it is resolved.
  `ModuleVersionSelector`
  `getTarget()`
  The target module selector used to resolve the dependency.
  `void`
  `useTarget(Object notation)`
  Allows to override the details of the dependency (see `getTarget()`) when it is resolved (see `getRequested()`).
  `void`
  `useVersion(String version)`
  Allows to override the version when the dependency `getRequested()` is resolved.

- ## Method Details

  - ### getRequested

    ModuleVersionSelector getRequested()
    The module, before it is resolved. The requested module does not change even if there are multiple dependency resolve rules that manipulate the dependency metadata.

  - ### useVersion

    void useVersion(String version)
    Allows to override the version when the dependency `getRequested()` is resolved. Can be used to select a version that is different than requested. Forcing modules via `ResolutionStrategy.force(Object...)` uses this capability. Configuring a version different than requested will cause `getTarget()` method return a target module with updated target version.

    If you need to change not only the version but also group or name please use the `useTarget(Object)` method.

    Parameters:
      `version` - to use when resolving this dependency, cannot be null. It is valid to configure the same version as requested.

  - ### useTarget

    void useTarget(Object notation)
    Allows to override the details of the dependency (see `getTarget()`) when it is resolved (see `getRequested()`). This method can be used to change the dependency before it is resolved, e.g. change group, name or version (or all three of them). In many cases users are interested in changing the version. For such scenario you can use the `useVersion(String)` method.

    It accepts the following notations:

    - String in a format of: 'group:name:version', for example: 'org.gradle:gradle-core:1.0'
    - Map with keys 'group', 'name' and 'version'; for example: [group: 'org.gradle', name: 'gradle-core', version: '1.0']
    - `Provider` and `ProviderConvertible` of `MinimalExternalModuleDependency`
    - instance of `ExternalDependency`
    - instance of `ModuleComponentSelector`
    - instance of `ModuleVersionSelector` (deprecated)
    Parameters:
      `notation` - the notation that gets parsed into an instance of `ModuleComponentSelector`
    Since:
      1.5

  - ### getTarget

    ModuleVersionSelector getTarget()
    The target module selector used to resolve the dependency. Never returns null. Target module is updated when methods like `useVersion(String)` are used.

  - ### because

    DependencyResolveDetails because(String description)
    Sets a human readable description for the reason the component is selected. The description will only be used if the rule is actually selecting a target, either using `useVersion(String)` or `useTarget(Object)`
    Parameters:
      `description` - a description of the selection reason
    Returns:
      this details object
    Since:
      4.5

  - ### artifactSelection

    DependencyResolveDetails artifactSelection(Action<? super ArtifactSelectionDetails> details)
    Configures the artifact selection for the target component of this dependency resolution rule.
    Parameters:
      `details` - the artifact selection details
    Since:
      6.6