无法从私有存储库加载Maven元数据。收到403:禁止

时间:2019-11-28 08:40:23

标签: maven react-native react-native-android

我正在尝试通过Maven将私有依赖项添加到我的项目(react-native-android)中。不幸的是,当我尝试构建./gradlew assembleDebug项目时,出现以下错误消息。


返回以下错误消息:

> FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> Could not resolve all task dependencies for configuration ':app:debugCompileClasspath'.
   > Could not resolve com.facebook.react:react-native:0.19.+.
     Required by:
         project :app > project :react-native-i18n
      > Failed to list versions for com.facebook.react:react-native.
         > Unable to load Maven meta-data from https://xxxPRIVATE_REPOxxx/android/com/facebook/react/react-native/maven-metadata.xml.
            > Could not get resource 'https://xxxPRIVATE_REPOxxx/android/com/facebook/react/react-native/maven-metadata.xml'.
               > Could not GET 'https://xxxPRIVATE_REPOxxx/android/com/facebook/react/react-native/maven-metadata.xml'. Received status code 403 from server: Forbidden

代码示例

repositories {
    mavenCentral()
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
    maven { url "https://xxxPRIVATE_REPOxxx/android" }
}

dependencies {
    implementation project(':react-native-i18n')
    implementation 'com.android.support:support-v4:+'
    implementation 'xxxPRIVATE_DEPENDENCYxxx:1.0.+'
}

我已经阅读了许多有关Maven和Gradle主题的文章和研究。这是我对问题的发现:

  1. 意思是我的sequence of declaring maven将从第一个声明的maven中获取“正确/合适”模块,而不是以下内容(maven xxxPRIVATE_REPOxxx)
      

    声明的顺序决定了Gradle在运行时如何检查依赖关系。如果Gradle在特定存储库中找到模块描述符,它将尝试从同一存储库下载该模块的所有工件。您可以了解有关依赖项下载的内部工作的更多信息。

  2. 返回403 Forbidden并不一定意味着我没有访问我要访问的存储库的权限,但也没有missing of resource的权限。

因此,我在这里做了一个假设...在下载项目依赖项时,Maven遍历了两个Maven存储库(Maven Google和xxxPRIVATE_REPOxxx)以获取合适的库。但是,当到达xxxPRIVATE_REPOxxx时,它无法找到maven-metadata.xml,因此结果为 https://xxxPRIVATE_REPOxxx/android/com/facebook/react/react-native/maven-metadata.xml 和403 Forbidden。

我的问题:

是否应该有一种方法表明从哪个Maven获取哪个依赖项?

我在想像这样的事情 implementation 'xxxPRIVATE_DEPENDENCYxxx:1.0.+' : xxxPRIVATE_REPOxxx(您知道我的意思)

我已经尝试过:

  1. 将我的Android插件升级到3.5.0
  2. 将我的Gradle版本升级到5.6.4
  3. ./ gradlew在步骤1和2之后清理并重新构建

1 个答案:

答案 0 :(得分:0)

发现问题是因为第三方库(react-native-i18n)使用的react native依赖关系太低。 您可以在react-native-i18n的build.gradle中找到它。

dependencies {
    compile 'com.facebook.react:react-native:0.12.+'
}

因此,我的解决方法是将代码更新为

compile 'com.facebook.react:react-native:+'