您可以使用 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(':')
}
}
有了此組態,複合建置會將任何對 org.sample:number-utils
的依賴替換為對 anonymous-library
根專案的依賴。