【问题标题】:Difference among mavenCentral(), jCenter() and mavenLocal()?mavenCentral()、jCenter() 和 mavenLocal() 的区别?
【发布时间】:2018-06-06 17:39:34
【问题描述】:

实际上,我正在研究build.gradle 文件。在某些情况下,我知道有时他们在存储库部分使用mavenCentral()jCenter()mavenLocal()。有时他们也使用 URL。所以我的脑海里出现了一些问题?

i) mavenCentral()、jCenter() 和 mavenLocal() 的区别?

ii) 我最应该使用哪一个?

iii) 是否存在任何与性能相关的问题?

【问题讨论】:

    标签: maven gradle android-gradle-plugin


    【解决方案1】:

    实际上,所有 3 个都是 Maven 存储库。我们将这些 maven 存储库用于我们的构建,方法是使用它的 URL 地址或它在本地文件系统中的位置。

    使用网址:

    repositories {
        maven { url("https://plugins.gradle.org/m2/") }
    }
    

    使用本地文件系统:

    repositories {
        maven { url '../maven-repo' }
    }
    

    Gradle 有三个“别名”,我们可以在将 Maven 存储库添加到构建时使用它们。这些别名是:

    1. mavenCentral():

    mavenCentral() 别名表示从central Maven 2 repository 获取依赖项。

    repositories {
        mavenCentral()
    }
    

    用于访问此存储库的 URL 是 https://repo.maven.apache.org/maven2/。存储库的名称是 MavenRepo。

    1. jcenter():

    jcenter() 别名表示从Bintray’s JCenter Maven repository 获取依赖项

    1. mavenLocal():

    mavenLocal() 别名表示从本地 Maven 存储库获取依赖项。

    资源链接:

    1. Gradle: Dependency Management

    2. Maven RepositoryHandler


    Jcenter 与 mavenCentral

    jcenter() 和 mavenCentral() 是 Android Studio 中 Gradle 插件的存储库

    早期版本的 Android Studio 使用 mavenCentral(),一段时间后,它切换到了 jcenter。

    这是因为 jcenter() 在性能和内存占用方面优于 mavenCentral():

    • Jcenter 是世界上最大的 Java 存储库
    • Jcenter通过CDN服务,使用https协议,高度 安全,Android Studio 0.8 版本 mavenCentral() 使用 http 协议
    • Jcenter 是 mavenCentral 的超集,包括许多额外的 罐子
    • Jcenter 性能优于 mavenCentral
    • mavenCentral会自动下载很多IDE相关的索引, 并且这些不需要经常使用。

    资源链接: https://www.jianshu.com/p/bce437eeb3d3


    最后更新:Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter

    更新:Android Developers Page 的 24-02-2021:

    公告链接:https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

    Maven 中心链接: https://maven.apache.org/repository/index.html

    解决方法:

    repositories {
        mavenLocal()
        
    //  jcenter()       // <- remove it
        mavenCentral()  // <- add it
        
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url "https://repo.spring.io/plugins-release/" }
    }
    

    【讨论】:

    • JFrog 的 Bintray Jcenter maven 存储库...我很长时间以来听到的最糟糕/令人困惑的名字...?
    • MavenCentral 提供了更多保证,即工件不会更改。 Bintray 允许维护人员覆盖现有的工件,这很方便,但最终会被恶意用户利用。
    • 现在jcenter预定关闭时间回到maven central
    • 这些行 maven { url "plugins.gradle.org/m2" } maven { url "repo.spring.io/plugins-release" } 修复了添加 mavenCentral() 后添加外部库时出现的问题 .. 谢谢
    • 我们的男人进来了,让我们觉得jCenter 是终极的。然后通知我们它的日落,并建议我们继续使用mavenCentral。哈哈。 ?????
    【解决方案2】:

    根据Android Developer页面-

    JCenter 弃用和服务终止

    JFrog 是一家维护许多 Android 项目使用的 JCenter 工件存储库的公司,该公司最近宣布弃用 JCenter 并将其即将退役。根据announcement,JCenter 将允许在 2022 年 2 月 1 日之前下载现有的工件。

    在 JCenter 上发布工件的开发人员应该开始将他们的包迁移到新主机,例如 Maven Central

    【讨论】:

      【解决方案3】:

      https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

      更新:为了在此次迁移中更好地支持社区,JFrog 已将 JCenter 新软件包版本的提交截止日期延长至 2021 年 3 月 31 日。

      澄清一下,JCenter 存储库将继续提供软件包 12 个月直到 2022 年 2 月 1 日。只有 JCenter REST API 和 UI 将于 2021 年 5 月 1 日停用。

      【讨论】:

      • 他们声称致力于只读,但实际上他们变得非常不可靠。我们使用的某些二进制文件已经超过两周无法通过它们访问,这意味着它们是一个不可接受的来源。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2018-05-25
      • 2019-05-13
      • 1970-01-01
      相关资源
      最近更新 更多