Gradle 提供了一種集中宣告所有專案儲存庫的方法,而不是在建置的每個子專案中或透過 allprojects 區塊宣告儲存庫。

集中宣告儲存庫是一項孵化中的功能。

您可以在 settings.gradle(.kts) 檔案中宣告將依慣例在每個子專案中使用的儲存庫

settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        mavenCentral()
    }
}
settings.gradle
dependencyResolutionManagement {
    repositories {
        mavenCentral()
    }
}

dependencyResolutionManagement 儲存庫區塊接受與專案中相同的標記法,包括 Maven 或 Ivy 儲存庫,無論是否帶有憑證。

儲存庫模式

預設情況下,在專案的 build.gradle(.kts) 檔案中宣告的儲存庫將覆蓋在 settings.gradle(.kts) 中宣告的儲存庫。但是,您可以使用 repositoriesMode 設定來控制此行為

settings.gradle.kts
dependencyResolutionManagement {
    repositoriesMode = RepositoriesMode.PREFER_PROJECT
}
settings.gradle
dependencyResolutionManagement {
    repositoriesMode = RepositoriesMode.PREFER_PROJECT
}

[[sec:available-modes] == 可用的模式

相依性解析管理有三種模式

模式 描述 預設? 使用案例

PREFER_PROJECT

在專案中宣告的儲存庫會覆蓋在 settings.gradle(.kts) 中宣告的儲存庫。

當團隊需要使用特定於其子專案的不同儲存庫時很有用。

PREFER_SETTINGS

settings.gradle(.kts) 中宣告的儲存庫會覆蓋在專案中宣告的儲存庫。

適用於在大型團隊中強制使用批准的儲存庫。

FAIL_ON_PROJECT_REPOS

在專案中宣告儲存庫會觸發建置錯誤。

嚴格強制使用在 settings.gradle(.kts) 中宣告的儲存庫。

您可以變更行為以優先使用 settings.gradle(.kts) 中的儲存庫

settings.gradle.kts
dependencyResolutionManagement {
    repositoriesMode = RepositoriesMode.PREFER_SETTINGS
}
settings.gradle
dependencyResolutionManagement {
    repositoriesMode = RepositoriesMode.PREFER_SETTINGS
}

當使用此模式時,如果專案或外掛宣告儲存庫,Gradle 將會警告您。

為了強制 使用在 settings.gradle(.kts) 中宣告的儲存庫,您可以將 Gradle 配置為在宣告專案外掛時使建置失敗

settings.gradle.kts
dependencyResolutionManagement {
    repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS
}
settings.gradle
dependencyResolutionManagement {
    repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS
}