摇篮查看错误的Maven存储库

时间:2019-09-03 06:55:52

标签: android maven gradle android-gradle-plugin

当我同步我的Android项目时,我不断看到以下消息:

Gradle: Download https://s3.amazonaws.com/moat-sdk-builds/com/google/android/gms/play-services-ads-base/maven-metadata.xml
Gradle: Download https://s3.amazonaws.com/moat-sdk-builds/com/google/android/gms/play-services-measurement-base/maven-metadata.xml
Gradle: Download https://s3.amazonaws.com/moat-sdk-builds/com/google/firebase/firebase-iid/maven-metadata.xml

这些库应该在google()存储库中找到,这是我设置中的第一个库:

allprojects {
    repositories {
        google()
        jcenter()
        // ...
        maven { url "https://s3.amazonaws.com/moat-sdk-builds" }
    }
}

但是,它调查了maven { url "https://s3.amazonaws.com/moat-sdk-builds" }并浪费了很多时间。这里发生了什么?有什么办法可以调试吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试customize dependency resolution behaviourdeclare repository filters

声明存储库过滤器很简单:

allprojects {
    repositories {
        google()
        jcenter()
        // ...
        maven {
            url "https://s3.amazonaws.com/moat-sdk-builds"
            content {
                // Does only include this group
                includeGroup "moat.sdk"
            }
        }
    }
}

还可以选择exclude进行分组并增强构建性能。 请注意,“将存储库匹配到依赖项是一个令人振奋的功能”。 API documentation提供有关过滤器选项的更多信息。

您可以在下面找到有关特定行为的更多信息。关于依赖关系解析,Gradle会按顺序检查存储库。

  

依赖项解析如何工作

     

[...]

     
      
  • 考虑到必需的依赖关系,Gradle尝试通过搜索依赖关系指向的模块来解决依赖关系。每个存储库已按顺序检查。根据存储库的类型,Gradle会查找描述模块的元数据文件(.module,.pom或ivy.xml文件),或者直接查找工件文件。
  •   
     

[...]

但是据我了解,不管它是否已经找到“正确的”工件,都可以“访问”每个存储库。

  
      
  • 检查完每个存储库中的模块后,Gradle会选择要使用的“最佳”模块。使用以下条件完成此操作:      
        
    • 对于动态版本,优先使用“较高”的具体版本而不是“较低”的版本。
    •   
    • 由模块元数据文件(.module,.pom或ivy.xml文件)声明的模块优于仅具有工件文件的模块。
    •   
    • 早期版本库中的模块优先于早期版本库中的模块。
    •   
    • 当依赖关系由具体版本声明并且在存储库中找到模块元数据文件时,无需继续搜索以后的存储库,并且过程的其余部分会被短路。
    •   
  •   
     

[...]

Introduction to Dependency Management - How dependency resolution works