跳至主要内容

使用 Apache Maven 注册表

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

对 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_TOKEN 进行身份验证

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

您必须使用具备相应范围的个人访问令牌(经典版)来在 GitHub Packages 中发布和安装软件包。更多信息请参阅 GitHub Packages 入门

您可以通过编辑 ~/.m2/settings.xml 文件并在其中加入个人访问令牌(经典版)来让 Apache Maven 对 GitHub Packages 进行身份验证。如果该文件不存在,请新建一个 ~/.m2/settings.xml

servers 标签中,添加一个子 server 标签并指定 id,将 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 中启用 SNAPSHOTS。

<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://repo.maven.apache.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 的软件包。

警告

您的 Apache Maven 软件包必须遵循命名约定,因此 artifactId 字段只能包含小写字母、数字或连字符。更多信息请参阅 Maven 坐标的命名约定(maven.apache.org 文档)。如果在构件名称中使用大写字母,将会收到 422 Unprocessable Entity 响应。

如果希望将多个软件包发布到同一仓库,可以在 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
    

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.