| API 文档 | DependencySubstitutions |
|---|
允许将依赖项替换为其他依赖项。
| 方法 | 描述 |
all(rule) | 添加一个依赖项替换规则,当配置解析时,该规则将对每个依赖项(包括传递依赖项)触发。该操作接收一个 |
module(notation) | 从提供的输入字符串创建 ModuleComponentSelector。字符串必须采用 "{group}:{module}:{version}" 格式。 |
project(path) | 从提供的输入字符串创建 ProjectComponentSelector。字符串必须采用 ":path" 格式。 |
substitute(substitutedDependency) | 用于为匹配提供的选择器的依赖项构建依赖项替换的 DSL 友好机制。 |
DependencySubstitutions all(Action<? super DependencySubstitution> rule)
Action<? super DependencySubstitution>添加一个依赖项替换规则,当配置解析时,该规则将对每个依赖项(包括传递依赖项)触发。该操作接收一个 DependencySubstitution 实例,可用于查找正在解析的依赖项并影响解析过程。
示例
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 + ":+"
}
}
}
}
规则按其声明的顺序进行评估。规则在强制模块应用之后进行评估(参见 ResolutionStrategy.force(java.lang.Object[]))
ComponentSelector module(String notation)
从提供的输入字符串创建 ModuleComponentSelector。字符串必须采用 "{group}:{module}:{version}" 格式。
ComponentSelector project(String path)
从提供的输入字符串创建 ProjectComponentSelector。字符串必须采用 ":path" 格式。
Substitution substitute(ComponentSelector substitutedDependency)
用于为匹配提供的选择器的依赖项构建依赖项替换的 DSL 友好机制。
示例
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')
}