anchor.diff:  include::{samplesPath}/userguide/dependencyManagement/inspectingDependencies/dependencyInsightReport/dependencyInsightReport.out[]
   ----
   
  +[[sec:resolving-version-conflict]]
  +== Resolving version conflicts
  +
  +If the selected version does not match your expectation, Gradle offers a series of tools to help you <<controlling_transitive_dependencies.adoc#,control transitive dependencies>>.
  +
   [[sec:resolving-variant-aware-errors]]
   == Resolving variant selection errors
   
  
positive.code: Large software projects inevitably deal with an increased number of dependencies either through direct or transitive dependencies.
  The <<#sec:listing_dependencies,dependencies report>> provides you with the raw list of dependencies but does not explain _why_ they have been selected or _which_ dependency is responsible for pulling them into the graph.
  
  Let's have a look at a concrete example. A project may request two different versions of the same dependency either as direct or transitive dependency.
  Gradle applies version conflict resolution to ensure that only one version of the dependency exists in the dependency graph.
  In this example the conflicting dependency is represented by `commons-codec:commons-codec`.
  
  .Declaring the JGit dependency and a conflicting dependency
  
negative.code: 
  [[sub:no-matching-variant-errors]]
  === No matching variants
  