如何从maven项目引用公共GitHub包

Ale*_*iev 7 maven github-package-registry

我有一个 GitHub 存储库,其中包含发布到其自己的 GitHub 包 maven 存储库的库。我还有另一个项目,我想在其中引用这个库作为依赖项。

当我将以下配置添加到项目的 POM 文件中时,它不起作用。

<repositories>
 <repository>
  <id>github</id>
  <name>GitHub Packages</name>
  <url>https://maven.pkg.github.com/test-account/test-lib</url>
 </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

它需要我进行身份验证。我知道这是非常合乎逻辑的,因为它基本上不是源代码库,而是底层的 Maven 代码库。但是有没有办法让maven正常访问这个依赖呢?我的图书馆位于公共仓库中。

PS 请不要建议使用 Jitpack,因为我希望拥有干净的解决方案而不需要任何额外的资源。

Fra*_*ans 12

答案似乎是“你不能”。请参阅GitHub 工作人员的评论

\n
\n

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

\n
\n

目前,最简单的选择似乎是创建一个具有读取访问权限的个人访问令牌,并将其包含在<repository>您的 部分的 URL 中pom.xml,如下所示:

\n
<repository>\n  <id>github</id>\n  <name>GitHub Packages</name>\n  <url>https://my-user:b96e7de7514e45c5@maven.pkg.github.com/my-user/my-repo</url>\n</repository>\n
Run Code Online (Sandbox Code Playgroud)\n

否则,选项可能是:

\n
    \n
  • 创建具有读取访问权限的个人访问令牌,然后与全世界共享。
  • \n
  • 使用此处描述的解决方法
  • \n
  • 发布到 Maven Central(但这真是一个痛苦的世界)
  • \n
\n

  • @AlexeyAnufriev 我发现你可以只在 URL 中包含访问令牌。这可能是目前要走的路。我已经更新了我的答案。但对于除了非常琐碎的设置之外的任何事情,如果您使用 Maven,我认为 GitHub Packages 不是最好的方法。它还需要为每个依赖项单独的存储库声明,因为您不能只执行 https://maven.pkg.github.com/my-user 来访问 GitHub 组织中所有项目的所有工件,这也很糟糕。 (4认同)
  • 小更新:创建对包具有只读访问权限的个人访问令牌并将其包含在 pom.xml 中会触发 GitGuardian - 自动撤销密钥。因此,除非为存储库禁用 GitGuardian,否则这不是一个解决方案。 (2认同)