除此之外,至少在较新的 gradle 版本中,顺序很重要:
考虑到存储库的顺序很重要时,这一点更为重要。
…</p>
✨ 声明的顺序决定了 Gradle 在运行时如何检查依赖项。如果 Gradle 在特定存储库中找到模块描述符,它将尝试从同一存储库下载该模块的所有工件。您可以了解有关Gradle 解析机制的内部工作原理的更多信息。
来源:gradle 5.4.1声明多个存储库
或者这是您特定 gradle 版本中的错误 - 我的回答可能会在 2k19 那天“有点晚”,因为您的问题来自 15 年;D
(至少在 Gradle 3.5 中定义类似
一个项目可以有多个存储库。Gradle 将按照指定的顺序在每个存储库中查找依赖项,并在包含所请求模块的第一个存储库处停止。
来源: gradle 3.5 Java 项目的依赖管理
)
一个常见的问题是,更高优先级的存储库和/或本地缓存已损坏!通常有足够多的人工 jcenter 代理包含不情愿的 POM 声明,但没有 jars。然后,您必须清理工件。类似于本地存储库。
您可以尝试通过运行 gradle--refresh-dependencies
并启用最佳情况-i
日志记录来忽略本地缓存,以查看请求的去向以及结果是什么。
看看如何强制 gradle 重新下载依赖项?
第二种选择:
从 gradle 5.1 开始,您始终可以声明过滤器
请参阅 gradle 5.4.1声明存储库过滤器
对我来说,我忽略了来自 jcenter 的任何 com.android 包,这会加快搜索速度并减少上面提到的已知问题