您可以在支持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(':')
}
}
通过此配置,复合构建将把任何对 org.sample:number-utils
的依赖项替换为对 anonymous-library
根项目的依赖项。