For each dependency we define in our build file, there is a dependency resolution rule. This rule is executed when the dependency needs to be resolved. We can customize this rule in our build file, so we can change certain parts of the rule before the dependency is actually resolved. Gradle allows us to change the dependency group, name, and version with a customized resolution rule. This way, we can even completely replace dependencies with other dependencies or force a particular version.
Dependency resolution rule details are implemented in the
org.gradle.api.artifacts.DependencyResolveDetails class. Inside the
resolutionStrategy configuration block, we use the
eachDependency method to customize a resolution rule. This method accepts a closure, and the closure argument is an instance of
DependencyResolveDetails. We use the
useTarget methods of
DependencyResolveDetails to change either the version or the complete group, name, and version...