# Interface ComponentSelectionReason

public interface ComponentSelectionReason
Answers the question why a component was selected during the dependency resolution.

Since:
  1.3

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<? extends ComponentSelectionDescriptor>`
  `getDescriptions()`
  Returns a list of descriptions of the causes that led to the selection of this component.
  `boolean`
  `isCompositeSubstitution()`
  Informs whether the selected component is a project substitute from a build participating in a composite build.
  `boolean`
  `isConflictResolution()`
  Informs whether the component was selected by conflict resolution.
  `boolean`
  `isConstrained()`
  Informs whether the selected component version has been influenced by a dependency constraint.
  `boolean`
  `isExpected()`
  Informs whether the component is the requested selection of all dependency declarations, and was not replaced for some reason, such as conflict resolution.
  `boolean`
  `isForced()`
  Informs whether the component was forced.
  `boolean`
  `isSelectedByRule()`
  Informs whether the component was selected by the dependency substitution rule.

- ## Method Details

  - ### isForced

    boolean isForced()
    Informs whether the component was forced. Users can force components via `ResolutionStrategy` or when declaring dependencies (see `DependencyHandler`).

  - ### isConflictResolution

    boolean isConflictResolution()
    Informs whether the component was selected by conflict resolution. For more information about Gradle's conflict resolution please refer to the user manual. `ResolutionStrategy` contains information about conflict resolution and includes means to configure it.

  - ### isSelectedByRule

    boolean isSelectedByRule()
    Informs whether the component was selected by the dependency substitution rule. Users can configure dependency substitution rules via `ResolutionStrategy.getDependencySubstitution()`
    Since:
      1.4

  - ### isExpected

    boolean isExpected()
    Informs whether the component is the requested selection of all dependency declarations, and was not replaced for some reason, such as conflict resolution.
    Since:
      1.11

  - ### isCompositeSubstitution

    boolean isCompositeSubstitution()
    Informs whether the selected component is a project substitute from a build participating in a composite build.
    Since:
      4.5

  - ### isConstrained

    boolean isConstrained()
    Informs whether the selected component version has been influenced by a dependency constraint.
    Returns:
      true if a dependency constraint influenced the selection of this component
    Since:
      4.6

  - ### getDescriptions

    List<? extends ComponentSelectionDescriptor> getDescriptions()
    Returns a list of descriptions of the causes that led to the selection of this component.
    Returns:
      the list of descriptions.
    Since:
      4.6