Skip to main content

Apache Mavenレジストリの利用

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

注: GitHub Packages は、GitHub AE では現在ベータ段階です。

GitHub Packages への認証を行う

パッケージを発行、インストール、および削除するには、アクセス トークンが必要です。

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

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

  • GITHUB_TOKEN では、ワークフロー リポジトリに関連付けられているパッケージを発行します。
  • packages:read 以上のスコープが設定された PAT では、(GITHUB_TOKEN ではアクセスできない) 他のプライベート リポジトリに関連付けられているパッケージがインストールされます。

GitHub Actions ワークフローで使用される 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 を your enterprise のホスト名に置き換え、 OWNER をリポジトリを所有するユーザーまたは Organization の名前に置き換えます。 大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

複数のリポジトリとやりとりする場合は、各リポジトリを repositories タグ内の個別の repository の子に追加し、それぞれの idservers タグ内の資格情報にマッピングします。

GitHub Packages では Apache Maven の SNAPSHOT バージョンがサポートされています。 SNAPSHOT 成果物のダウンロードに GitHub Packages リポジトリを使用するには、それを使用するプロジェクトまたは ~/.m2/settings.xml ファイルの POM で 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.HOSTNAME/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 という名前のパッケージを公開します。

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

パッケージの作成について詳しくは、maven.apache.org のドキュメントを参照してください。

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

    <distributionManagement>
       <repository>
         <id>github</id>
         <name>GitHub OWNER Apache Maven Packages</name>
         <url>https://maven.HOSTNAME/OWNER/REPOSITORY</url>
       </repository>
    </distributionManagement>
    
  2. pom.xml ファイルの plugins 要素で、checksum-maven-plugin プラグインを追加し、少なくとも SHA-256 チェックサムを送信するようにプラグインを構成します。

    <plugins>
        <plugin>
            <groupId>net.nicoulaj.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <version>1.9</version>
            <executions>
                <execution>
                <goals>
                    <goal>artifacts</goal>
                </goals>
                </execution>
            </executions>
            <configuration>
            <algorithms>
                <algorithm>SHA-256</algorithm>
            </algorithms>
            </configuration>
        </plugin>
    </plugins>
    
  3. Publish the package.

    $ mvn deploy

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

パッケージのインストール

Apache Maven パッケージを GitHub Packages 空インストールするには、パッケージを依存関係として含めるように 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. pom.xml ファイルの plugins 要素で、checksum-maven-plugin プラグインを追加し、少なくとも SHA-256 チェックサムを送信するようにプラグインを構成します。

    <plugins>
        <plugin>
            <groupId>net.nicoulaj.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <version>1.9</version>
            <executions>
                <execution>
                <goals>
                    <goal>artifacts</goal>
                </goals>
                </execution>
            </executions>
            <configuration>
            <algorithms>
                <algorithm>SHA-256</algorithm>
            </algorithms>
            </configuration>
        </plugin>
    </plugins>
    
  4. パッケージをインストールします。

    $ mvn install

参考資料