【问题标题】:android build.gradle file for app - what is default repository应用程序的 android build.gradle 文件 - 什么是默认存储库
【发布时间】:2015-10-07 14:41:51
【问题描述】:

在我的顶级 build.gradle 文件的 build.gradle 文件中 - jcenter() 没有专门编写。所以我在顶级 build.gradle 文件中有以下内容:

// 顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。

buildscript {
    repositories {
        //jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
}

allprojects {
    repositories {
        //jcenter()
    }
}

不知何故,我在模块中定义的所有依赖项仍然可以找到,并且应用程序运行良好。我可以假设 jcenter() 是默认存储库,那么如果没有找到?它是默认使用的吗?否则我的依赖怎么来。另外,如果我想超越 jcenter() 以使用另一个 repo,我将如何做。

如果我有以下自定义存储库会怎样:

buildscript {
    repositories {
        maven {
            url "https://someEnterpriseRepository.com/myRepo"
        }
    }

这是否意味着它首先检查 maven 自定义 repo,然后在未找到依赖项时检查 jcenter() 吗? 顺便说一句,在测试所有这些之前,我已经从文件中清除了 IDE 缓存->使缓存无效。

【问题讨论】:

  • 尝试从命令行运行您的构建。我的猜测是,如果您没有定义存储库,它将失败。当然,这就是我所看到的。不过,我无法解释为什么构建可以在 Android Studio 中运行。
  • 进行此更改后,您是否尝试更改依赖项 - 例如任何库的更低或更高版本。这一点很重要——这个库,你将添加/降低/提高以前不能在你的任何项目中使用。我记得在 AS 的最后一次更新中 - 它在您的本地计算机上为所有项目创建 1 个公共存储库,所以如果您在 1 个项目中下载,那么它对所有其他项目都可用
  • 你确定它直到为你工作吗?我在 buildscript -> repositories 和 allprojects -> repositories 中评论了 jcenter(),但在 Sync 期间出现错误
  • 它可能取决于 gradle 缓存(尝试运行 gradle clean)和您的依赖项。也发布你的 build.gradle。 gradle插件可以缓存。
  • Mateusz Pryczkowski 我按照你的要求做了,并更改了依赖项的版本,但它没有编译,所以我猜你的权利是缓存。

标签: android gradle build.gradle jcenter


【解决方案1】:

如果脚本中没有明确说明的存储库,您的构建可能会正常工作的唯一两个原因是:

  1. Gradle 使用 an init script 以透明方式定义存储库。
  2. 依赖项来自本地缓存。

【讨论】:

  • 你的正确!!我检查了 init.gradle 脚本,里面有 repo。否则它将是各种缓存。谢谢。
猜你喜欢
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
相关资源
最近更新 更多