首页 > 解决方案 > Gradle 中的多个 github 包

问题描述

我有两个github pacakges命名XXX/AAAYYY/BBB(相同OWNER但不同repository)。现在,当我尝试将它们添加到我的项目中时,gradle 似乎总是使用第一个存储库。

repositories {
maven { url 'https://jitpack.io' }
maven {
    url "https://maven.pkg.github.com/XXX/AAA"
    credentials {
        username = USERNAME
        password = PWD
    }
}
maven {
    url "https://maven.pkg.github.com/XXX/BBB"
    credentials {
        username = USERNAME
        password = PWD
    }
}}

com.example实现上也是一样的。

dependencies {    
//  implementation 'com.example:package'  
// AAA
implementation("YYY:AAA:${a_version}")
// BBB
implementation("YYY:BBB:${b_version}")
}

我在同步时收到以下错误

Could not HEAD 'https://maven.pkg.github.com/XXX/AAA/YYY/BBB/0.1/BBB-0.1.pom'. Received status code 400 from server: Bad Request. Disable Gradle 'offline mode' and sync project

我们可以清楚地看到,gradle 使用了错误的存储库(AAA 而不是 BBB)

任何帮助表示赞赏。

提前致谢

标签: kotlingradlebuild.gradlemultiple-repositories

解决方案


您需要将这些存储库声明为尊重依赖项的专有:

repositories {
    maven { url 'https://jitpack.io' }
    exclusiveContent {
        forRepository {
            maven {
                url 'https://maven.pkg.github.com/XXX/AAA'
                credentials {
                    username = "USERNAME"
                    password = "PWD"
                }
            }
        }
        filter {
            includeModule("YYY", "AAA")
        }
    }
    exclusiveContent {
        forRepository {
            maven {
                url 'https://maven.pkg.github.com/XXX/BBB'
                credentials {
                    username = "USERNAME"
                    password = "PWD"
                }
            }
        }
        filter {
            includeModule("YYY", "BBB")
        }
    }
}

推荐阅读