Ten*_*r04 3 java github gradle maven github-packages
我在 Github 上建立了一个私人项目,其中有一些 Maven 包。我可以在 Github 网站上浏览到它们。
按照此处的说明,我已设置 build.gradle 来声明存储库,如下所示:
repositories {
mavenLocal()
maven {
url = "https://maven.pkg.github.com/myAccountName/myRepo"
credentials {
username = System.getenv("GITHUB_USERNAME")
password = System.getenv("GITHUB_PACKAGES_TOKEN")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经使用我在具有权限的 Github 设置中创建的用户名和访问令牌设置了系统环境变量read:packages
。
我声明依赖关系的方式与之前将其安装到mavenLocal()
. 但我从本地 Maven 存储库中删除了它,以便我可以测试它。
无法解决依赖关系。但 Gradle 发出的所有警告是:
无法解析“:android@debug/compileClasspath”的依赖关系:无法解析myGroup:myArtifact:1.0
没有记录有关 Maven 存储库之一无效的警告,但我认为这可能是问题,因为当包位于本地 Maven 存储库中时,它工作正常。可能是我指定的内容不正确,或者凭据不起作用。
我还尝试直接输入字符串用户名和令牌,而不是使用环境变量。该令牌是全新的且未过期。
如何确定与 Github Packages Maven 存储库的连接出了什么问题?有什么办法可以获得更有用的日志吗?或者您是否发现我的身份验证方式有问题?
从你的问题中我可以看出,你的设置看起来是正确的。
\n看来您\xe2\x80\x99只查看Android Studio提供的错误。Gradle\xe2\x80\x99s 自己的错误消息通常更有帮助,因此我\xe2\x80\x99d 建议查看这些错误消息。换句话说,我\xe2\x80\x99d 建议尝试从命令行构建项目,例如:
\n./gradlew build\n
Run Code Online (Sandbox Code Playgroud)\n根据错误的内容,您\xe2\x80\x99 将收到不同的错误消息。例如,如果您的密码/令牌错误,那么您\xe2\x80\x99将看到如下内容:
\n> Could not resolve all files for configuration \':compileClasspath\'.\n > Could not resolve com.example:my-lib:1.0.0.\n Required by:\n project :\n > Could not resolve com.example:my-lib:1.0.0.\n > Could not get resource \'https://maven.pkg.github.com/myAccountName/myRepo/com/example/my-lib/1.0.0/my-lib-1.0.0.pom\'.\n > Could not GET \'https://maven.pkg.github.com/myAccountName/myRepo/com/example/my-lib/1.0.0/my-lib-1.0.0.pom\'. Received status code 401 from server: Unauthorized\n
Run Code Online (Sandbox Code Playgroud)\n请注意Received status code 401 from server: Unauthorized
最后的。
但是,如果您的依赖项声明错误(组、模块名称或版本中的任何一个),那么您\xe2\x80\x99将收到如下错误:
\n> Could not resolve all files for configuration \':compileClasspath\'.\n > Could not find com.example:oops-wrong:1.0.0.\n Searched in the following locations:\n - file:/home/chriki/.m2/repository/com/example/oops-wrong/1.0.0/oops-wrong-1.0.0.pom\n - https://maven.pkg.github.com/myAccountName/myRepo/com/example/oops-wrong/1.0.0/oops-wrong-1.0.0.pom\n Required by:\n project :\n
Run Code Online (Sandbox Code Playgroud)\n当然,如果您之前没有(正确地)上传/发布了所需的包,那么您\xe2\x80\x99将得到相同的错误。您可以手动检查它是否存在于https://maven.pkg.github.com/myAccountName/myRepo/packages
。
对于其他情况,可能还会有其他错误消息。例如,我记得见过 403。不幸的是,GitHub Packages 注册表似乎没有向 Gradle 提供足够的详细信息,因此它可以提供除上述两个错误之外的其他错误。即使我使用了错误的存储库,我仍然只会收到第二种错误:
\n> Could not resolve all files for configuration \':compileClasspath\'.\n > Could not find com.example:my-lib:1.0.0.\n Searched in the following locations:\n - file:/home/chriki/.m2/repository/com/example/my-lib/1.0.0/my-lib-1.0.0.pom\n - https://maven.pkg.github.com/oops-wrong/com/example/my-lib/1.0.0/my-lib-1.0.0.pom\n Required by:\n project :\n
Run Code Online (Sandbox Code Playgroud)\n更多发现:
\n回到你的具体问题:Android Studio 错误消息的一部分似乎仍然直接来自 Gradle。它说\xe2\x80\x9c无法解析\xe2\x80\x9d而不是\xe2\x80\x9c无法找到\xe2\x80\x9d。所以它\xe2\x80\x99s可能是存储库连接的问题。如果您还没有\xe2\x80\x99t 将您的令牌用于其他任何用途,那么您可以在https://github.com/settings/tokens检查GitHub 是否认为它已被使用(例如,\xe2\x80\ x9c最近一周内使用\xe2\x80\x9d)。如果它显示 \xe2\x80\x9cNeverused\xe2\x80\x9d,那么你\xe2\x80\x99就会知道 Gradle 从未成功连接到 GitHub,你应该仔细检查使用过的令牌或尝试新的令牌。或者,您可以先尝试使用您的凭据wget
:
wget --user myAccountName --password "$GITHUB_PACKAGES_TOKEN" \\\n https://maven.pkg.github.com/myAccountName/myRepo/com/example/my-lib/1.0.0/my-lib-1.0.0.pom\n
Run Code Online (Sandbox Code Playgroud)\n