跳至主要内容

使用 Apache Maven 注册表

您可以配置 Apache Maven 将包发布到 GitHub Packages,并使用存储在 GitHub Packages 上的包作为 Java 项目中的依赖项。

谁可以使用此功能?

GitHub Packages 可用于 GitHub 免费版、GitHub 专业版、组织的 GitHub 免费版、GitHub 团队版、GitHub Enterprise Cloud 和 GitHub Enterprise Server 3.0 或更高版本。


对于使用旧版按仓库付费计划的帐户拥有的私有仓库,GitHub Packages 不可用。此外,使用旧版按仓库付费计划的帐户无法访问支持细粒度权限的注册表,因为这些帐户按仓库计费。有关支持细粒度权限的注册表列表,请参阅“GitHub Packages 的权限说明”。有关更多信息,请参阅“GitHub 的计划”。

验证 GitHub Packages

GitHub Packages 仅支持使用个人访问令牌(经典版)进行身份验证。有关更多信息,请参阅“管理您的个人访问令牌”。

您需要访问令牌才能发布、安装和删除私有、内部和公共包。

您可以使用个人访问令牌(经典版)验证 GitHub Packages 或 GitHub API。创建个人访问令牌(经典版)时,您可以根据需要为令牌分配不同的范围。有关个人访问令牌(经典版)的与包相关的范围的更多信息,请参阅“GitHub Packages 的权限说明”。

要在 GitHub Actions 工作流程中验证 GitHub Packages 注册表,您可以使用

  • GITHUB_TOKEN 发布与工作流程仓库关联的包。
  • 具有至少 read:packages 范围的个人访问令牌(经典版)来安装与其他私有仓库关联的包(GITHUB_TOKEN 无法访问)。

有关在 GitHub Actions 工作流程中使用的 GITHUB_TOKEN 的更多信息,请参阅“自动令牌身份验证”。

使用个人访问令牌进行身份验证

您必须使用具有适当范围的个人访问令牌(经典版)才能在 GitHub Packages 中发布和安装包。有关更多信息,请参阅“GitHub Packages 简介”。

您可以通过编辑您的 *~/.m2/settings.xml* 文件以包含您的个人访问令牌(经典版)来使用 Apache Maven 验证 GitHub Packages。如果不存在,请创建一个新的 *~/.m2/settings.xml* 文件。

servers 标签中,添加一个具有 id 的子 server 标签,将 USERNAME 替换为您的 GitHub 用户名,并将 TOKEN 替换为您的个人访问令牌。

repositories 标签中,通过将仓库的 id 映射到您在包含凭据的 server 标签中添加的 id 来配置仓库。将 OWNER 替换为拥有仓库的个人帐户或组织的名称。由于不支持大写字母,因此即使 GitHub 用户或组织名称包含大写字母,也必须对仓库所有者使用小写字母。

如果要与多个仓库交互,可以将每个仓库添加到 repositories 标签中的单独 repository 子元素中,并将每个仓库的 id 映射到 servers 标签中的凭据。

GitHub Packages 支持 Apache Maven 的 SNAPSHOT 版本。要使用 GitHub Packages 仓库下载 SNAPSHOT 工件,请在使用项目的 POM 或您的 *~/.m2/settings.xml* 文件中启用 SNAPSHOT。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <activeProfiles>
    <activeProfile>github</activeProfile>
  </activeProfiles>

  <profiles>
    <profile>
      <id>github</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>https://repo1.maven.org/maven2</url>
        </repository>
        <repository>
          <id>github</id>
          <url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

  <servers>
    <server>
      <id>github</id>
      <username>USERNAME</username>
      <password>TOKEN</password>
    </server>
  </servers>
</settings>

发布包

默认情况下,GitHub 会将包发布到与包名称相同的现有仓库中。例如,GitHub 将在名为 OWNER/test 的仓库中发布名为 com.example:test 的包。

如果要将多个包发布到同一个仓库,可以在 *pom.xml* 文件的 <distributionManagement> 元素中包含仓库的 URL。GitHub 将根据该字段匹配仓库。由于仓库名称也是 distributionManagement 元素的一部分,因此无需执行其他步骤即可将多个包发布到同一个仓库。

有关创建包的更多信息,请参阅 maven.apache.org 文档

  1. 编辑位于包目录中的 *pom.xml* 文件的 distributionManagement 元素,将 OWNER 替换为拥有仓库的个人帐户或组织的名称,并将 REPOSITORY 替换为包含项目的仓库的名称。

    <distributionManagement>
       <repository>
         <id>github</id>
         <name>GitHub OWNER Apache Maven Packages</name>
         <url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
       </repository>
    </distributionManagement>
    
  2. 发布包。

    mvn deploy
    

发布包后,您可以在 GitHub 上查看该包。有关更多信息,请参阅“查看包”。

安装包

要从 GitHub Packages 安装 Apache Maven 包,请编辑 *pom.xml* 文件以包含该包作为依赖项。如果要为指定的仓库所有者安装来自任何仓库的包,请使用类似 https://maven.pkg.github.com/OWNER/* 的仓库 URL。有关在项目中使用 *pom.xml* 文件的更多信息,请参阅 Apache Maven 文档中的“POM 简介”。

  1. 验证 GitHub Packages。有关更多信息,请参阅“验证 GitHub Packages”。

  2. 将包依赖项添加到项目的 *pom.xml* 文件的 dependencies 元素中,将 com.example:test 替换为您的包。

    <dependencies>
     <dependency>
        <groupId>com.example</groupId>
        <artifactId>test</artifactId>
        <version>1.0.0-SNAPSHOT</version>
      </dependency>
    </dependencies>
    
  3. 安装包。

    mvn install
    

进一步阅读