@Incubating public interface DependencySubstitutions
| Modifier and Type | Interface and Description | 
|---|---|
| static interface  | DependencySubstitutions.SubstitutionProvides a DSL-friendly mechanism for specifying the target of a substitution. | 
| Modifier and Type | Method and Description | 
|---|---|
| DependencySubstitutions | all(Action<? super DependencySubstitution> rule)Adds a dependency substitution rule that is triggered for every dependency (including transitive)
 when the configuration is being resolved. | 
| ComponentSelector | module(String notation)Create a ModuleComponentSelector from the provided input string. | 
| ComponentSelector | project(String path)Create a ProjectComponentSelector from the provided input string. | 
| DependencySubstitutions.Substitution | substitute(ComponentSelector substitutedDependency)DSL-friendly mechanism to construct a dependency substitution for dependencies matching the provided selector. | 
DependencySubstitutions all(Action<? super DependencySubstitution> rule)
DependencySubstitution
 that can be used to find out what dependency is being resolved and to influence the resolution process.
 
 Example:
 
 configurations { main }
 // add dependency substitution rules
 configurations.main.resolutionStrategy.dependencySubstitution {
   // Use a rule to change the dependency module while leaving group + version intact
   all { DependencySubstitution dependency ->
     if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.name == 'groovy-all') {
       dependency.useTarget details.requested.group + ':groovy:' + details.requested.version
     }
   }
   // Use a rule to replace all missing projects with module dependencies
   all { DependencySubstitution dependency ->
    if (dependency.requested instanceof ProjectComponentSelector) {
       def targetProject = findProject(":${dependency.requested.path}")
       if (targetProject == null) {
         dependency.useTarget "org.myorg:" + dependency.requested.path + ":+"
       }
     }
   }
 }
 
 The rules are evaluated in order they are declared. Rules are evaluated after forced modules are applied (see ResolutionStrategy.force(Object...)ComponentSelector module(String notation)
ComponentSelector project(String path)
DependencySubstitutions.Substitution substitute(ComponentSelector substitutedDependency)
 configurations { main }
 configurations.main.resolutionStrategy.dependencySubstitution {
   // Substitute project and module dependencies
   substitute module('org.gradle:api') with project(':api')
   substitute project(':util') with module('org.gradle:util:3.0')
   // Substitute one module dependency for another
   substitute module('org.gradle:api:2.0') with module('org.gradle:api:2.1')
 }