对 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 文档。
-
编辑位于软件包目录下的 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> -
发布软件包。
mvn deploy
发布软件包后,您可以在 GitHub 上查看该软件包。欲了解更多信息,请参阅 查看软件包。
安装软件包
要从 GitHub Packages 安装 Apache Maven 软件包,请编辑 pom.xml 文件,将该软件包声明为依赖。如果希望从指定所有者的任意仓库安装软件包,可使用类似 https://maven.pkg.github.com/OWNER/* 的仓库 URL。有关在项目中使用 pom.xml 文件的更多信息,请参阅 Apache Maven 文档中的 POM 入门。
-
对 GitHub Packages 进行身份验证。更多信息请参阅 对 GitHub Packages 进行身份验证。
-
在项目的 pom.xml 文件的
dependencies元素中添加软件包依赖,将com.example:test替换为您的软件包。<dependencies> <dependency> <groupId>com.example</groupId> <artifactId>test</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> </dependencies> -
安装软件包。
mvn install