您可以在支援 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 確定的預設替換不足,或者在特定組合中不需要它們。對於這些情況,可以明確宣告包含的建置的替換。
以產生 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
根專案的相依性。