Jac*_*cob 232 java android maven-central android-gradle-plugin jcenter
我最后一次使用Android Studio时,它生成了.gradle带有mavencentral()buildscript存储库的文件,而现在已经存在了jcenter().
任何人都可以解释与此相关的问题.还有其他的回购吗?什么时候应该切换它们?它们对项目,模块,库有什么影响?Android开发人员的其他任何必需品?
谁负责维护这些回购?
JBa*_*uch 142
在Bintray,我刚刚重新发布了一篇非常详细的博客文章,描述了Google进行此项更改的原因.以下是最重要的一点:
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背后的公司和神器,请参阅我的个人资料以获取详细信息和链接.
SGi*_*ill 59
我想知道同样的事情,我没有明确的答案,但认为可能值得分享我学到的东西(很少).我发现在Google Code上的一个问题中提到了从Maven Central到JCenter的转移,但是没有发现有关这种情况究竟何时发生的详细信息 - 在最近的Android Studio更改列表中找不到提及.
从阅读JCenter开始,它就是Bintray背后的存储库,来自JFrog公司(我之前遇到过,我想这就是'J'来自的地方).根据Bintray的博客,Bintray是Maven Central的超集,所以如果这是真的,那么应该没有缺少依赖关系的问题,但我想这将取决于你在项目中使用的确切内容 - 你可以直接检查repos,因为它们都有很好的易于搜索的网站.因此,对于谁来维护这些回购,我知道,依赖项的生产者可以将它们的依赖项添加到每个仓库,而只需要维护服务的仓库所有者.
在何时切换它很难解决.我认为AOSP仍在使用Maven Central(从查看新Android应用程序的模板),但是那个模板也仍然使用非常古老的Gradle版本(0.4).有一些关于其他人遇到来自jcenter的依赖关系问题的问题,但实际上报道的并不多,并且Google可能会在发布AS final之前再次切换到其他一些repo.如果Maven Central现在仍然可以正常工作,那么你可以在此之前推迟转换,特别是如果你正在构建大型商业解决方案.
Man*_*ser 24
无论build.gradle文件中的默认值是什么 - 在基于团队的开发工作中,您应该使用Sonatype Nexus或JFrog Artifactory等存储库管理器,而不是直接引用这些上游存储库.
这将允许您节省大量带宽,将两者和许多其他存储库结合使用,并在您自己的网络中管理所有这些存储库.
就Maven Central和JCenter而言.JCenter是JFrog努力拥抱,扩展(和消灭?)Maven Central.Maven Central是Maven,SBT和其他人的默认存储库,而Gradle已切换到JCenter.考虑到JFrog和Gradleware作为公司合作,这并不奇怪.由于Android SDK现在使用Gradle作为构建系统,因此迁移到JCenter是下一步的逻辑.
JCenter本身是Maven Central顶部的薄单板.它代理它(或多或少成功)并添加其他组件.两者都托管在CDN网络上,性能极高.Maven Central本身是所有Eclipse,Apache和大多数其他开源项目的目标,没有它,JCenter将基本上是空的.
使用它们中的任何一个都可以正常工作,但我建议您直接使用源代码,并通过使用存储库管理器来控制它.例如,Nexus Open Source是免费的,并且支持Maven,Gradle,SBT,Ivy和其他人使用的Maven存储库以及NuGet,NPM和RubyGems支持.
免责声明:我是使用Nexus和Nexus培训师进行存储库管理的作者Sonatype,免费的Central Repository的赞助商,Android Maven插件的项目负责人,并通过从AOSP重建将一些Android库推送到Central.
http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en
这篇文章可以回答你的问题.
At first, Android Studio chose Maven Central as a default repository. Once you create a new project from old version of Android Studio, mavenCentral() would be automatically defined in build.gradle.
But the big problem of Maven Central is it is not developer-friendly. It is surprisingly hard to upload the library to. To be able to do so, developer has to be at some level of geeky. And with some more reason for example a security concern and etc, Android Studio team decided to switch the default repository to jcenter instead as you can see that once you create a new project from latest version of Android Studio, jcenter() would be automatically defined instead of mavenCentral().
| 归档时间: |
|
| 查看次数: |
57114 次 |
| 最近记录: |