您可以在支援 Gradle 的 IDE 中開啟此範例。

宣告包含的建置所替換的相依性

預設情況下,Gradle 將配置每個包含的建置,以確定它可以提供的相依性。執行此操作的演算法非常簡單:Gradle 將檢查包含的建置中專案的 groupname,並將專案相依性替換為任何相符的外部相依性。

dependencySubstitution 術語中,預設替換為

dependencySubstitution {
    ... for each project in included build ...
    substitute module("${project.group}:${project.name}") using project(":${project.name}")
}

宣告包含的建置的替換

有時,Gradle 確定的預設替換不足,或者在特定組合中不需要它們。對於這些情況,可以明確宣告包含的建置的替換。

以產生 Java 实用程序函式庫的單一專案建置 'unpublished' 為例,但未宣告 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 根專案的相依性。