您可以使用 IntelliJ 原生匯入器Eclipse Buildship 在 IDE 內開啟此範例。

宣告由包含建置取代的相依性

預設情況下,Gradle 會設定每個包含的建置,以確定它可以提供的相依性。這樣做的演算法非常簡單:Gradle 會檢查包含建置中專案的 groupname,並為任何相符的外部相依性取代專案相依性。

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 根專案的依賴。