# Interface Dependency

All Known Subinterfaces:
  `ExternalDependency, ExternalModuleDependency, FileCollectionDependency, MinimalExternalModuleDependency, ModuleDependency, ProjectDependency`

public interface Dependency
A `Dependency` represents a dependency on the artifacts from a particular source. A source can be an Ivy module, a Maven POM, another Gradle project, a collection of Files, etc... A source can have zero or more artifacts.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `ARCHIVES_CONFIGURATION`
  `static final String`
  `CLASSIFIER`
  `static final String`
  `DEFAULT_CONFIGURATION`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `because(@Nullable String reason)`
  Sets the reason why this dependency should be used.
  `Dependency`
  `copy()`
  Creates and returns a new dependency with the property values of this one.
  `@Nullable String`
  `getGroup()`
  Returns the group of this dependency.
  `String`
  `getName()`
  Returns the name of this dependency.
  `@Nullable String`
  `getReason()`
  Returns a reason why this dependency should be used, in particular with regards to its version.
  `@Nullable String`
  `getVersion()`
  Returns the version of this dependency.

- ## Field Details

  - ### DEFAULT_CONFIGURATION

    static final String DEFAULT_CONFIGURATION
    See Also:
      - Constant Field Values

  - ### ARCHIVES_CONFIGURATION

    static final String ARCHIVES_CONFIGURATION
    See Also:
      - Constant Field Values

  - ### CLASSIFIER

    static final String CLASSIFIER
    See Also:
      - Constant Field Values

- ## Method Details

  - ### getGroup

    @Nullable String getGroup()
    Returns the group of this dependency. The group is often required to find the artifacts of a dependency in a repository. For example, the group name corresponds to a directory name in a Maven like repository. Might return null.

  - ### getName

    String getName()
    Returns the name of this dependency. The name is almost always required to find the artifacts of a dependency in a repository. Never returns null.

  - ### getVersion

    @Nullable String getVersion()
    Returns the version of this dependency. The version is often required to find the artifacts of a dependency in a repository. For example the version name corresponds to a directory name in a Maven like repository. Might return null.

  - ### copy

    Dependency copy()
    Creates and returns a new dependency with the property values of this one.
    Returns:
      The copy. Never returns null.

  - ### getReason

    @Nullable String getReason()
    Returns a reason why this dependency 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
    Since:
      4.6

  - ### because

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