我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

配置 Apache Maven 用于 GitHub 包

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

GitHub Packages is available with GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 2.22, and GitHub One.


GitHub Packages 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 GitHub Packages 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud 和 GitHub One。 更多信息请参阅“GitHub 的产品”。

本文内容

Did this doc help you?

注:安装或发布 Docker 映像时,GitHub Packages 当前不支持外部图层,如 Windows 映像。

向 GitHub Packages 验证

您需要访问令牌才能发布、安装和删除 GitHub Packages 中的包。 您可以使用个人访问令牌直接向 GitHub Packages 或 GitHub API 验证您的用户名。 创建个人访问令牌时,可根据需要为令牌分配不同的作用域。

To authenticate using a GitHub Actions workflow:

  • For package registries (PACKAGE-REGISTRY.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME), you can use a GITHUB_TOKEN.
  • For the container registry (ghcr.io/OWNER/IMAGE-NAME), you must use a personal access 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 来配置仓库。 在 repositories 标记中,通过将仓库的 id 映射到您在包含凭据的 server 标记中添加的 id 来配置仓库。 由于不支持大写字母,因此,即使您的 GitHub 用户或组织名称中包含大写字母,也必须对仓库所有者使用小写字母。

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

GitHub Packages 支持 Apache Maven 的 SNAPSHOT 版本。 要使用仓库下载此类构件,必须在 ~/.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://repo1.maven.org/maven2</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
          <id>github</id>
          <name>GitHub OWNER Apache Maven Packages</name>
          <url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
        </repository>
      </repositories>
    </profile>
  </profiles>

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

使用 GITHUB_TOKEN 进行身份验证

如果您使用的是 GitHub Actions 工作流程,可以使用 GITHUB_TOKEN 发布和使用 GitHub Packages 中的软件包,而无需存储和管理个人访问令牌。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。

发布包

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

如果要将多个包发布到同一个仓库,您可以在 pom.xml 文件的 <distributionManagement> 元素中包含该仓库的 URL。 GitHub will match the repository based on that field. 由于仓库名称也是 distributionManagement 元素的一部分,因此将多个包发布到同一个仓库无需额外步骤、

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

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

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

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

    $ mvn deploy

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

安装包

要从 GitHub Packages 安装 Apache Maven 包,请编辑 pom.xml 文件以包含该包作为依赖项。 如果要从多个仓库安装包,请为每个仓库添加 repository 标记。 有关在项目中使用 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

延伸阅读

Did this doc help you?

问问别人

找不到要找的内容?

联系我们