发布JAVA maven 软件包到 Github

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

GitHub Packages 可用于 GitHub Free、GitHub Pro、GitHub Free for organizations、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 3.0 或更高版本以及 GitHub AE。


GitHub Packages 不适用于使用旧版每个仓库计划的帐户拥有的私有仓库。此外,使用旧的 per-repository 计划的帐户无法访问 Container 注册表,因为这些帐户是按存储库计费的。有关更多信息,请参阅“ GitHub 的产品”。

对 GitHub 包进行身份验证
您需要一个访问令牌来发布、安装和删除包。

您可以使用个人访问令牌 (PAT) 对 GitHub Packages 或 GitHub API 进行身份验证。创建个人访问令牌时,您可以根据需要为令牌分配不同的范围。有关 PAT 的包相关范围的更多信息,请参阅“关于 GitHub Packages 的权限”。

要在 GitHub Actions 工作流程中对 GitHub Packages 注册表进行身份验证,您可以使用:

GITHUB_TOKEN 发布与工作流存储库关联的包。
用于安装与其他私有存储库(GITHUB_TOKEN无法访问)关联的软件包的 PAT 。
有关GITHUB_TOKEN在 GitHub Actions 工作流程中使用的更多信息,请参阅“工作流程中的身份验证”。

使用个人访问令牌进行身份验证
您必须使用具有适当范围的个人访问令牌才能在 GitHub Packages 中发布和安装包。更多信息请参阅“关于 GitHub Packages”。

您可以通过编辑~/.m2/settings.xml文件以包含您的个人访问令牌来使用 Apache Maven 对 GitHub Packages 进行身份验证。如果不存在,则创建一个新的~/.m2/settings.xml文件。

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

在repositories标签中,通过将存储库的 映射id到id您在server包含您的凭证的标签中添加的来配置存储库。将OWNER替换 为拥有存储库的用户或组织帐户的名称。由于不支持大写字母,因此即使 GitHub 用户或组织名称包含大写字母,您也必须为存储库所有者使用小写字母。

如果您想与多个存储库进行交互,您可以将每个存储库添加到标签中的单独repository子代,将每个存储库repositories映射id到servers标签中的凭据。

GitHub Packages 支持SNAPSHOTApache Maven 的版本。要使用 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://repo1.maven.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 将发布一个com.example:test名为OWNER/test.

如果您想将多个包发布到同一个存储库,您可以<distributionManagement>在pom.xml文件的元素中包含存储库的 URL 。GitHub 将根据该字段匹配存储库。由于存储库名称也是distributionManagement元素的一部分,因此无需额外步骤即可将多个包发布到同一个存储库。

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

编辑位于您的包目录distributionManagement中的pom.xml文件的元素,替换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 包进行身份验证。更多信息,请参阅“对 GitHub Packages 进行身份验证”。

将包依赖项添加到dependencies项目pom.xml文件的元素中,替换com.example:test为您的包。

<dependencies>
  <dependency>
    <groupId>com.example</groupId>
    <artifactId>test</artifactId>
    <version>1.0.0-SNAPSHOT</version>
  </dependency>
</dependencies>


安装软件包。

$ mvn install

参考阅读

https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry

分类: 默认 标签: 发布于: 2022-01-07 14:48:03, 更新于: 2022-01-07 15:18:27