注:安装或发布 Docker 映像时,GitHub Packages 当前不支持外部图层,如 Windows 映像。
向 GitHub Packages 验证
您需要访问令牌才能发布、安装和删除 GitHub Packages 中的包。 您可以使用个人访问令牌直接向 GitHub Packages 或 GitHub API 验证您的用户名。 创建个人访问令牌时,可根据需要为令牌分配不同的作用域。
要使用 GitHub Actions 工作流程验证:
- 对于包注册表 (
PACKAGE-REGISTRY.pkg.github.com
),您可以使用GITHUB_TOKEN
。 - 对于容器注册表 (
ghcr.io/OWNER/IMAGE-NAME
),必须使用个人访问令牌。
使用个人访问令牌进行身份验证
您必须使用具有适当范围的个人访问令牌才可在 GitHub Packages 中发布和安装。 更多信息请参阅“关于 GitHub Packages”。
通过编辑 ~/.m2/settings.xml 文件以包含个人访问令牌,您可以使用 Apache Maven 向 GitHub Packages 验证。 如果 ~/.m2/settings.xml 文件不存在,请新建该文件。
在 servers
标记中,添加带 id
的子 server
标记,将 USERNAME 替换为您的 GitHub 用户名,将 TOKEN 替换为您的个人访问令牌。
在 repositories
标记中,通过将仓库的 id
映射到您在包含凭据的 server
标记中添加的 id
来配置仓库。 将 将 REPOSITORY 替换为您要向其发布包或从中安装包的仓库的名称,并将 OWNER 替换为拥有仓库的用户或组织帐户的名称。 由于不支持大写字母,因此,即使您的 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 将根据该字段匹配仓库。 由于仓库名称也是 distributionManagement
元素的一部分,因此将多个包发布到同一个仓库无需额外步骤、
有关创建包的更多信息,请参阅 maven.apache.org 文档。
- 编辑包目录中 pom.xml 文件的
distributionManagement
元素,将OWNER
替换为拥有该仓库的用户或组织帐户的名称,将REPOSITORY
替换为包含项目的仓库的名称。
将 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 文件以包含该包作为依赖项。 如果要从多个仓库安装包,请为每个仓库添加 repository
标记。 有关在项目中使用 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