Interface DependencySubstitutions


public interface DependencySubstitutions
Allows replacing dependencies with other dependencies.
Since:
2.5
  • Method Details

    • all

      Adds a dependency substitution rule that is triggered for every dependency (including transitive) when the configuration is being resolved. The action receives an instance of 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.module == 'groovy-all') {
             dependency.useTarget dependency.requested.group + ':groovy:' + dependency.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...)
      Returns:
      this
    • module

      ComponentSelector module(String notation)
      Create a ModuleComponentSelector from the provided input string. Strings must be in the format "{group}:{module}:{version}".
    • project

      ComponentSelector project(String path)
      Create a ProjectComponentSelector from the provided input string. Strings must be in the format ":path".
    • variant

      ComponentSelector variant(ComponentSelector selector, Action<? super VariantSelectionDetails> detailsAction)
      Transforms the supplied selector into a specific variant selector.
      Parameters:
      selector - the origin selector
      detailsAction - the variant selection details configuration
      Since:
      6.6
    • platform

      Transforms the provided selector into a platform selector.
      Parameters:
      selector - the original selector
      Since:
      6.6
    • substitute

      DependencySubstitutions.Substitution substitute(ComponentSelector substitutedDependency)
      DSL-friendly mechanism to construct a dependency substitution for dependencies matching the provided selector.

      Examples:

       configurations { main }
       configurations.main.resolutionStrategy.dependencySubstitution {
         // Substitute project and module dependencies
         substitute module('org.gradle:api') using project(':api')
         substitute project(':util') using module('org.gradle:util:3.0')
      
         // Substitute one module dependency for another
         substitute module('org.gradle:api:2.0') using module('org.gradle:api:2.1')
       }