为啥存在 Google maven 存储库以及我应该何时使用它?

Posted

技术标签:

【中文标题】为啥存在 Google maven 存储库以及我应该何时使用它?【英文标题】:Why does the Google maven repository exist and when should I use it?为什么存在 Google maven 存储库以及我应该何时使用它? 【发布时间】:2018-02-19 02:43:42 【问题描述】:

所以当我试图更新我的 build.gradle 依赖项时,我发现自己摸不着头脑。 com.android.support:appcompat 库版本 26.0.2 没有解析。经过一番搜索,我了解到我必须将 Google 的 maven 存储库添加到我的项目 gradle 文件中的存储库列表中。因此,现在列出了 Google 的 maven 存储库和 jcenter()。

那么,为什么 Google 现在托管他们自己的 maven 存储库,还有什么理由不使用它?奇怪的是,两个地方都托管了不同版本的库。

【问题讨论】:

有什么问题?存在许多不同的存储库,只需使用您需要的存储库。它对您的应用没有任何影响 这是一个“问题”,因为它令人困惑。 Android Studio 生成的模板项目没有添加 Google 的 maven 存储库,因此我想知道为什么我不能使用面向 API 26 所需的 appcompat 库。不过我明白你的意思。 【参考方案1】:

在构建 Android 应用时,有几个存储库在起作用:

jcenter() 用于众多开源库,包括 Android Plugin for Gradle。

google()(又名maven.google.com)用于支持库、架构组件等。对于支持库,您需要将此存储库用于26.0.0 及更高版本。

Android 存储库由 SDK 管理器安装在您的硬盘上,用于引入 maven.google.com 之前的支持库。

许多其他托管存储库(jitpack.io、我的 CWAC 存储库等)。

奇怪的是,两个地方都托管了不同版本的库。

我不知道maven.google.com 是否也支持来自 Android 存储库的库版本。否则,粗略地说,maven.google.com 是 Android 存储库的新托管版本,用于未来更新版本的库。

我也不确定 SDK 管理器为 Play Services 依赖项安装的 Google 存储库是否被 maven.google.com 取代。

为什么 Google 现在托管自己的 maven 存储库

您必须询问 Google。 Android 存储库对于简单的构建来说是可以的,但在更复杂的场景中(例如,构建在无头 CI 服务器上)就变得很痛苦。使用普通的托管 Maven 存储库应该可以简化这些事情。

Android Studio生成的模板项目没有添加谷歌的maven仓库

您使用的是 Android Studio 2.3.3 或更早版本。 Android Studio 3.0 及更高版本的模板将为您添加google()

【讨论】:

以上是关于为啥存在 Google maven 存储库以及我应该何时使用它?的主要内容,如果未能解决你的问题,请参考以下文章

为啥刷新 Maven 存储库对于 IntelliJ 来说还不够?

为啥 Hybris 发布不安全的 http maven 存储库 URL?为啥我们不能覆盖它?

为啥 Gradle 不使用插件 pom.xml 中声明的 Maven 存储库?

为啥没有 Eclipse Birt 3.7 的 Maven 存储库 => Birt 4.2 有一个

Sonatype Nexus 中基于代理 SVN Google 代码的 Maven 存储库

为啥我的mac idea maven项目一引入依赖就报错?