Android buildscript repositories: jcenter VS mavencentral
上次我使用Android Studio时,它生成了带有buildscript存储库的文件,而现在有..gradle
mavencentral()
jcenter()
任何人都可以解释与此相关的问题。还有其他回购吗?我们什么时候应该切换它们?它们对项目、模块、库有什么影响?安卓开发者还有其他必需品吗?
谁负责维护这些存储库?
上次我使用Android Studio时,它生成了带有buildscript存储库的文件,而现在有..gradle
mavencentral()
jcenter()
任何人都可以解释与此相关的问题。还有其他回购吗?我们什么时候应该切换它们?它们对项目、模块、库有什么影响?安卓开发者还有其他必需品吗?
谁负责维护这些存储库?
在Bintray,我刚刚转发了一篇非常详细的博客文章,描述了谷歌做出这一改变的原因。以下是最重要的一点:
jcenter()
是 的超集,它包含许多额外的储存库和工件。mavenCentral()
关于性能改进,一些Android开发人员倡导者已经面临/注意到了使用maven central进行大规模索引的问题。
用Tor Norbye的话来说:
我使用全新的设置目录运行AndroidStudio,因此它连接了maven central并下载了可用工件的索引。
然后我碰巧看了看我的目录的大小。
我的~/Library/Cache/AndroidStudioPreview是1.5G,其中1.2G由“Maven”子目录获取。
太荒谬了。我们几乎不使用索引。它的主要用途是“项目结构”对话框中的依赖项编辑器,但我们真的不需要为它预先计算索引。MavenCentral有一个快速的在线JSON搜索,当有人搜索工件时,我们可以按需使用。在 https://android-review.googlesource.com/#/c/94843/ 我们添加了一个 lint 检查,用于检查依赖项是否是最新的,并且对少数工件的搜索几乎是即时的。
简而言之,我们真的不需要缓存;它可能有助于.gradle和maven .pom文件中的代码完成,但这不是一个超级重要的用例,当然也不是所有用户都应该牺牲1.5G的下载速度和磁盘空间才能有一天做。阅读更多:Maven指数是巨大的!
此外,您可能会发现这个关于Hacker News的非常短(1Q和1A)的讨论很有趣。
我与JFrog合作,这是bintray和artifatory背后的公司,请参阅我的个人资料以获取详细信息和链接。
我想知道同样的事情,我没有一个明确的答案,但认为可能值得分享我学到的(很少的)。我在Google Code上的一个问题中发现了从Maven Central到JCenter的迁移,但没有发现有关这种情况发生的确切时间的详细信息 - 在Android Studio的最新更改列表中找不到提及。
从JCenter上读到,它是Bintray背后的存储库,来自JFrog公司(我以前遇到过他,我想这就是“J”的来源)。根据Bintray博客,Bintray是Maven Central的超集,所以如果这是真的,那么丢失依赖项应该没有问题,但我想这将取决于你在项目中使用的内容 - 你总是可以直接检查存储库,因为两者都有很好的易于搜索的网站。因此,对于维护这些存储库的人来说,据我所知,这取决于依赖项的生产者将其依赖项添加到每个存储库,而存储库所有者只需维护服务。
在何时切换方面,很难弄清楚。我认为AOSP仍在使用Maven Central(从新Android应用程序的模板中查找),但是该模板也仍在使用非常旧的Gradle版本(0.4)。关于其他人在jcenter的依赖项方面存在一些问题,但实际上并没有很多报告,Google可能会在发布AS final之前再次切换到其他存储库。如果Maven Central现在仍然正常工作,您可以推迟切换,直到那时,特别是如果您正在构建大型商业解决方案。