401未经授权使用Gradle从GitHub软件包下载公共软件包

时间:2020-02-25 17:57:36

标签: maven gradle github-package-registry

我是GitHub公共仓库的维护者。我已经设置了GitHub Actions来构建发布到GitHub Packages的发布。您可以在此处看到该软件包已创建:

https://github.com/paulschwarz/spring-dotenv/packages/135114

我注意到的第一件事是GitHub仅提供了一个Maven安装代码段。我使用此代码将依赖项添加到另一个项目中,它似乎可以正常工作。

现在我想将此包导入Gradle项目。我添加了

dependencies {
  implementation ('me.paulschwarz:spring-dotenv:0.0.3')
}

gradle告诉我

Could not find me.paulschwarz:spring-dotenv:0.0.3.
     Searched in the following locations:
       - https://jcenter.bintray.com/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom
       - https://repo.maven.apache.org/maven2/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom

这已经很奇怪了,因为我的Maven项目似乎没有解决依赖关系的问题。我必须说我很好奇它是如何工作的?肯定GitHub软件包没有与JCenter或Maven Central集成吗?

无论如何,下一步,添加存储库

repositories {
    jcenter()
    mavenCentral()
    maven { url = uri('https://maven.pkg.github.com/paulschwarz/spring-dotenv') }
}

这时,Gradle应该了解在哪里可以找到软件包。但是,我明白了

      > Could not resolve me.paulschwarz:spring-dotenv:0.0.3.
         > Could not get resource 'https://maven.pkg.github.com/paulschwarz/spring-dotenv/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom'.
            > Could not GET 'https://maven.pkg.github.com/paulschwarz/spring-dotenv/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom'. Received status code 401 from server: Unauthorized

这真的是未经授权的401吗?还是URL错误,并且它正在尝试访问授权的端点?

如果它是正品,那为什么呢?这是带有公共软件包的公共仓库。我可以直接从GitHub页面匿名下载该软件包。我在Gradle中做错什么了?

2 个答案:

答案 0 :(得分:1)

如您所见,GitHub目前不支持未授权的程序包访问(但计划在将来进行)as explained by one of their staff (May 27 '20)

我们的Maven服务目前不允许未经授权的访问。我们计划在将来提供此服务,但在此之前需要改进服务。

对于操作,您可以将PAT添加到您的秘密存储区,或使用GITHUB_TOKEN进行身份验证。建议您在settings.xml中使用环境变量方法(请参阅setup-java 4),以免将令牌存储在文件中。

答案 1 :(得分:1)

如上所述,您需要对 GitHub 包进行身份验证。

const navItems = document.querySelectorAll(".nav-items");

navItems.forEach(navItem=> {
  navItem.addEventListener("click", () =>{
    navLinks.classList.remove("nav-active");
    burger.classList.remove("toggle");
    body.classList.remove("fixed-position");
  });
});

GITHUB_USER 在 gradle.properties 中定义,GITHUB_TOKEN 定义为环境变量。 GITHUB_TOKEN 在您的 GitHub Actions 工作流程文件中作为 ${{secrets.GITHUB_TOKEN }}

可用

在本地运行时,您必须自己定义它。