您可以在支持 Gradle 的 IDE 中打开此示例。 |
声明包含构建所替换的依赖项
默认情况下,Gradle 会配置每个包含构建,以确定它可以提供的依赖项。执行此操作的算法非常简单:Gradle 会检查包含构建中项目的 group
和 name
,并将项目依赖项替换为任何匹配的外部依赖项。
在 dependencySubstitution
术语中,默认替换项为
dependencySubstitution {
... for each project in included build ...
substitute module("${project.group}:${project.name}") using project(":${project.name}")
}
声明包含构建的替换项
有时 Gradle 确定的默认替换项不足,或者在特定的复合构建中不需要它们。对于这些情况,可以为包含构建显式声明替换项。
例如,有一个单项目构建 'unpublished',它生成一个 Java 工具库,但没有声明 group
属性的值
build.gradle.kts
plugins {
java
}
build.gradle
plugins {
id 'java'
}
当此构建包含在复合构建中时,它将尝试替换依赖模块 undefined:unpublished
('undefined' 是 project.group
的默认值,'unpublished' 是根项目名称)。显然,这在复合构建中不会很有用。
为了在复合构建中按原样使用 unpublished
库,组合构建可以显式声明它提供的替换项。
settings.gradle.kts
includeBuild("anonymous-library") {
dependencySubstitution {
substitute(module("org.sample:number-utils")).using(project(":"))
}
}
settings.gradle
includeBuild('anonymous-library') {
dependencySubstitution {
substitute module('org.sample:number-utils') using project(':')
}
}
通过此配置,复合构建将用对 anonymous-library
根项目的依赖项替换对 org.sample:number-utils
的任何依赖项。