为何settings.gradle无法覆盖react-native-keychain的build.gradle仓库配置?
你的settings.gradle配置没覆盖react-native-keychain的build.gradle里的仓库配置,核心原因有这几点:
dependencyResolutionManagement的作用范围不包含buildscript
你设置的RepositoriesMode.PREFER_SETTINGS只对**项目依赖(比如implementation、api这类)**生效,管不到模块buildscript块里的classpath依赖解析。buildscript是用来配置构建脚本自身依赖的,它的仓库配置是独立的,默认不会被项目级的dependencyResolutionManagement覆盖。pluginManagement管不到buildscript里的classpath插件
你的pluginManagement配置是用来管理通过plugins {}块声明的插件仓库,但react-native-keychain是用buildscript.dependencies.classpath引入插件,再通过apply plugin应用,这种方式不受pluginManagement的仓库配置约束。模块级buildscript的优先级
每个模块的build.gradle里的buildscript块会直接使用自己声明的仓库去拉取classpath依赖,除非你通过Gradle的初始化脚本(init.gradle)全局覆盖所有buildscript的仓库配置,否则项目级settings不会干预这块。
另外注意下你提到的Nexus代理仓库指向的是https://plugins.gradle.org/m2/b,是不是多打了个b?正常Gradle插件仓库地址是https://plugins.gradle.org/m2/,如果地址不对,就算代理了也拉不到对应插件。
内容的提问来源于stack exchange,提问作者Niccolo Giannerini

