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] == 可用模式
依赖项解析管理有三种模式
模式 | 描述 | 默认? | 用例 |
---|---|---|---|
|
项目中声明的仓库将覆盖在 |
是 |
当团队需要使用特定于其子项目的不同仓库时很有用。 |
|
在 |
否 |
对于在大型团队中强制执行使用批准的仓库很有用。 |
|
在项目中声明仓库会触发构建错误。 |
否 |
严格强制执行使用在 |
您可以更改行为以优先使用 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
}