您可以使用 IntelliJ 原生导入器 或 Eclipse Buildship 在 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` 的任何依赖。