このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2021-09-23. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてください。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してください。

Apache Mavenレジストリの利用

GitHub Packages にパッケージを公開するよう Apache Mavenを設定し、GitHub Packages に保存されたパッケージを依存関係としてJavaプロジェクトで利用できます。

GitHub PackagesはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server、GitHub AEで利用できます。

ノート: GitHub Packagesは現在GitHub Enterprise Server 2.22でベータです。 GitHub Enterprise Serverのインスタンスのベータに参加するには、サインアップフォームを使ってください。

デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/testというリポジトリ内のcom.example:testという名前のパッケージを公開します。

GitHub Packages への認証を行う

GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。

GitHub Packages、あるいはGitHub APIで認証を受けるのに、個人のアクセストークン(PAT)が利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。 PATに関するパッケージ関連のスコープについての詳しい情報は、「GitHub Packagesの権限について」を参照してください。

GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。

  • GITHUB_TOKENを使って、ワークフローリポジトリに関連づけられたパッケージを公開。
  • PATで他のプライベートリポジトリ(これにはGITHUB_TOKENがアクセスできない)に関連づけられたパッケージをインストール。

GitHub Actionsワークフローで使われる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にマッピングして、リポジトリを設定してください。 HOSTNAME を GitHub Enterprise Serverのインスタンス のホスト名に、OWNER をリポジトリを所有するユーザもしくはOrganizationの名前に置き換えます。 大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

複数のリポジトリとやりとりをしたい場合には、それぞれのリポジトリをrepositoriesタグの子の個別のrepositoryに追加し、それぞれのidservers タグのクレデンシャルにマッピングできます。

GitHub PackagesはApache MavenのSNAPSHOTバージョンをサポートしています。 SNAPSHOT成果物をダウンロードするためにGitHub Packagesリポジトリを使うには、使用するプロジェクトのPOM中もしくは~/.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>
        </repository>
        <repository>
          <id>github</id>
          <url>https://maven.HOSTNAME/OWNER/*</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </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>
        </repository>
        <repository>
          <id>github</id>
          <url>HOSTNAME/_registry/maven/OWNER/*</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という名前のパッケージを公開します。

同じリポジトリに複数のパッケージを公開したい場合には、そのリポジトリのURLをpom.xmlファイルの<distributionManagement>要素に含めてください。 GitHub は、このこのフィールドを元にしてリポジトリを照合します。 リポジトリ名もdistributionManagement要素の一部なので、複数のパッケージを同じリポジトリに公開するための追加手順はありません。

パッケージの作成に関する詳しい情報についてはmaven.apache.orgのドキュメンテーションを参照してください。

  1. パッケージディレクトリにあるpom.xmlファイルのdistributionManagement要素を編集し、HOSTNAMEをGitHub Enterprise Serverのインスタンスのホスト名で、OWNERをリポジトリを所有するユーザもしくはOrganizationアカウント名で、REPOSITORYをプロジェクトを含むリポジトリ名で置き換えてください。

    もしもインスタンスでSubdomain Isolationが有効化されているなら:

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

    If your instance has subdomain isolation disabled:

    <distributionManagement>
       <repository>
         <id>github</id>
         <name>GitHub OWNER Apache Maven Packages</name>
         <url>https://HOSTNAME/_registry/maven/OWNER/REPOSITORY</url>
       </repository>
    </distributionManagement>
    
  2. パッケージを公開します。

    $ mvn deploy

パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しい情報については「パッケージの表示」を参照してください。

パッケージをインストールする

GitHub PackagesからApache Mavenパッケージをインストールするには、pom.xmlファイルを編集してパッケージを依存関係として含めてください。 複数のリポジトリからパッケージをインストールしたい場合は、それぞれについてrepositoryタグを追加してください。 プロジェクト内でのpom.xmlファイルの利用に関する詳しい情報については、Apache Mavenドキュメンテーション中の「 Introduction to the 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

参考リンク

問題がまだ解決していませんか?