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

配置 Apache Maven 用于 GitHub 包

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

GitHub Packages 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 2.22 和 GitHub One。

本文内容

注: GitHub Packages 目前正在测试用于 GitHub Enterprise Server 2.22。 要加入您的实例的测试版,请使用注册表单

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

向 GitHub Packages 验证

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

要 使用 GitHub Actions 工作流程向 GitHub Packages 验证,必须使用 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 来配置仓库。 将 HOSTNAME 替换为 GitHub Enterprise Server 实例的主机名称,将 REPOSITORY 替换为您要向其发布包或从中安装包的仓库的名称,并将 OWNER 替换为拥有仓库的用户或组织帐户的名称。 由于不支持大写字母,因此,即使您的 GitHub 用户或组织名称中包含大写字母,也必须对仓库所有者使用小写字母。

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

GitHub Packages 支持 Apache Maven 的 SNAPSHOT 版本。 要使用仓库下载此类构件,必须在 ~/.m2/settings.xml 文件中启用 SNAPSHOTS。

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

<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.HOSTNAME/OWNER/REPOSITORY</url>
        </repository>
      </repositories>
    </profile>
  </profiles>

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

例如,OctodogAppOctocatApp 项目将发布到同一个仓库:

<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://HOSTNAME/_registry/maven/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 将根据该字段匹配仓库。 由于仓库名称也是 distributionManagement 元素的一部分,因此将多个包发布到同一个仓库无需额外步骤、

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

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

HOSTNAME 替换为您的 GitHub Enterprise Server 实例的主机名称, 将 OWNER 替换为拥有仓库的用户或组织帐户的名称,并将 REPOSITORY 替换为包含您项目的仓库的名称。

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

<distributionManagement>
   <repository>
     <id>github</id>
     <name>GitHub OWNER Apache Maven Packages</name>
     <url>https://maven.HOSTNAME/OWNER/REPOSITORY</url>
   </repository>
</distributionManagement>

例如,OctodogAppOctocatApp 项目将发布到同一个仓库:

<distributionManagement>
   <repository>
     <id>github</id>
     <name>GitHub OWNER Apache Maven Packages</name>
     <url>https://HOSTNAME/_registry/maven/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

延伸阅读

此文档对您有帮助吗?

Privacy policy

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。