如何将公共 GitHub 仓库用作 Maven 依赖

发布: (2025年12月14日 GMT+8 19:36)
3 min read
原文: Dev.to

Source: Dev.to

Introduction

Apache Maven 是大多数 Java 项目的核心,而 GitHub Packages 提供了一种方便的方式来托管和分发 Maven 构件。即使你的仓库是公开的,也需要完成一些重要步骤才能让一切顺畅运行。

GitHub Packages 允许你:

  • 在源码旁边托管 Maven 构件
  • 控制对构件的访问
  • 将依赖保持在与你的仓库相近的位置
  • 与 GitHub Actions 无缝集成

Note: GitHub Packages 即使是公开的 Maven 包也需要身份验证。

Prerequisites

  • 一个 GitHub 账户
  • 一个发布 Maven 包的公开仓库
  • 本地已安装 Maven
  • pom.xml 有基本了解

Step 1 – Create a GitHub Personal Access Token (PAT)

GitHub Packages 只支持 classic 个人访问令牌。

ScopePurpose
read:packages下载包所必需
write:packages如果你还想发布包,则必需

请妥善保管此令牌——你将在 Maven 中将其用作密码。

Configure Maven Credentials (settings.xml)

Maven 从 ~/.m2/settings.xml 读取凭据。创建或编辑该文件,内容如下:

<servers>
  <server>
    <id>github</id>
    <username>YOUR_GITHUB_USERNAME</username>
    <password>YOUR_PERSONAL_ACCESS_TOKEN</password>
  </server>
</servers>
  • <id> 值(github)很重要;Maven 会将此 ID 与 pom.xml 中的仓库定义匹配。

Add the GitHub Packages Repository to pom.xml

<repositories>
  <repository>
    <id>github</id>
    <url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
  </repository>
</repositories>

Example

<url>https://maven.pkg.github.com/mewan/my-public-repo</url>

Important: 仓库所有者名称必须使用小写,即使实际用户名中包含大写字母。

如果需要从同一 GitHub 用户或组织消费多个包,可以使用通配符:

<url>https://maven.pkg.github.com/OWNER/*</url>

Declare the Dependency

像对待任何 Maven 构件一样,将依赖添加到 pom.xml 中:

<dependency>
  <groupId>com.example</groupId>
  <artifactId>my-library</artifactId>
  <version>1.0.0</version>
</dependency>

请确保:

  • 包的版本已在 GitHub Packages 中存在。
  • artifactId 为小写(GitHub 强制使用小写)。

像往常一样运行 Maven:

mvn clean install

如果身份验证和配置正确,Maven 将从 GitHub Packages 下载该包并将其纳入构建。

Common Issues

IssueDescription
Assuming public packages don’t need authentication所有包都需要 PAT。
Mismatched <id> values between settings.xml and pom.xmlID 必须完全一致。
Using uppercase letters in artifactIdGitHub 强制使用小写的 artifactId。
Incorrect GitHub Packages URL确保 URL 符合 https://maven.pkg.github.com/OWNER/REPOSITORY 的格式。

仔细检查这些细节可以节省大量时间。

Conclusion

将 GitHub Packages 作为 Maven 注册表是一种强大的依赖管理方式,尤其是当你的代码已经托管在 GitHub 上时。虽然公开包也需要身份验证可能让人感到意外,但配置完成后工作流会非常顺畅可靠。如果你已经在使用 GitHub Actions,这套设置也能很好地融入 CI/CD 流水线。

Happy coding! 🚀

Back to Blog

相关文章

阅读更多 »

Maven 的内部

介绍 今天我浪费了两小时的宝贵时间。就是这样。 这一切都是因为 Maven https://maven.apache.org/,在我看来,它很奇特。 一切都与……有关