Gradle 提供了一种集中声明所有项目仓库的方法,而不是在每个子项目或通过 allprojects
代码块中声明。
集中声明仓库是一个孵化中的功能。 |
您可以在 settings.gradle(.kts)
文件中声明将在每个子项目中约定使用的仓库。
settings.gradle.kts
dependencyResolutionManagement {
repositories {
mavenCentral()
}
}
settings.gradle
dependencyResolutionManagement {
repositories {
mavenCentral()
}
}
dependencyResolutionManagement
的 repositories 代码块接受与项目文件中相同的记法,包括带或不带凭据的 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] == 可用模式
依赖解析管理有三种模式。
模式 | 描述 | 默认? | 用例 |
---|---|---|---|
|
项目中声明的仓库覆盖 |
是 |
当团队需要在其子项目中使用不同的特定仓库时很有用。 |
|
|
否 |
对于大型团队强制使用批准的仓库非常有用。 |
|
在项目中声明仓库会触发构建错误。 |
否 |
严格强制使用在 |
您可以更改行为以优先使用 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
}