Skip to main content

Gradleレジストリの利用

GitHub Packages Gradle レジストリにパッケージを発行し、GitHub Packagesに格納されているパッケージをJava プロジェクトの依存関係として使用するように Gradle を構成できます。

メモ

サイト管理者はサポートされている各パッケージの種類を有効または無効にできるので、このパッケージの種類はインスタンスで利用できない可能性があります。 詳しくは、「Enterprise 向けのパッケージエコシステムサポートを設定する」をご覧ください。

GitHub Packages に認証を行う

メモ

GitHub Packages では、personal access token (classic)を使用した認証のみがサポートされています。 詳しくは、「個人用アクセス トークンを管理する」をご覧ください。

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

personal access token (classic)、あるいは GitHub Packages API で認証を受けるのに、GitHub を利用できます。 personal access token (classic) を作成するときは、必要に応じてさまざまなスコープをトークンに割り当てることができます。 personal access token (classic) のパッケージ関連のスコープについては、「GitHub Packagesの権限について」を参照してください。

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

  • GITHUB_TOKEN では、ワークフロー リポジトリに関連付けられているパッケージを発行します。
  • 他のプライベート リポジトリに関連付けられたパッケージをインストールするために、少なくとも read:packages スコープが設定された personal access token (classic) (リポジトリにパッケージへの読み取りアクセス権が付与されている場合は、GITHUB_TOKEN を使用できます)。 「パッケージのアクセス制御と可視性の設定」を参照してください)。

GitHub Actions ワークフローで使われる GITHUB_TOKEN の詳細については、「ワークフローでの認証に GITHUB_TOKEN を使用する」を参照してください。 Gradle で GITHUB_TOKEN を使用する方法の詳細については、 AUTOTITLE を参照してください。

personal access tokenを使用した認証の実行

personal access token (classic) でパッケージを発行およびインストールするには、適切なスコープで GitHub Packages を使う必要があります。 詳しくは、「GitHub Packages の概要」をご覧ください。

build.gradle ファイル(Gradle Groovy)または build.gradle.kts ファイル(Kotlin DSL)を編集して GitHub Packages を追加することで、Gradle Groovy または Kotlin DSL を使用して Gradle から personal access token (classic) に認証できます。 リポジトリ中の単一のパッケージもしくは複数パッケージを認識するようにGradle Groovy及びKotlin DSLを設定することもできます。

REGISTRY_URLをインスタンスの Maven レジストリの URL に置き換えます。 インスタンスで Subdomain Isolation が有効になっている場合は、maven.HOSTNAME を使用します。 インスタンスで Subdomain Isolation が無効になっている場合は、HOSTNAME/_registry/maven を使用します。 どちらの場合も、HOSTNAME を GitHub Enterprise Server インスタンスのホスト名に置き換えます。

USERNAME は GitHub のユーザー名に、TOKEN は personal access token (classic) に、REPOSITORY は公開するパッケージが含まれているリポジトリの名前に、OWNER はそのリポジトリを所有している GitHub 上の個人アカウントまたは組織の名前に置き換えます。 大文字はサポートされていないため、 GitHub ユーザー名または組織名に大文字が含まれている場合でも、リポジトリ所有者には小文字を使用する必要があります。

メモ

GitHub Packages では Apache Maven の SNAPSHOT バージョンがサポートされています。 SNAPSHOT 成果物のダウンロードに GitHub Packages リポジトリを使用するには、それを使用するプロジェクトまたは ~/.m2/settings.xml ファイルの POM で SNAPSHOTS を有効にします。 例については、 AUTOTITLE を参照してください。

リポジトリ中の単一のパッケージのためにGradle Groovyを使う例

plugins {
    id("maven-publish")
}
publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
            }
        }
    }
    publications {
        gpr(MavenPublication) {
            from(components.java)
        }
    }
}

同じリポジトリ中の複数のパッケージのためにGradle Groovyを使う例

plugins {
    id("maven-publish") apply false
}
subprojects {
    apply plugin: "maven-publish"
    publishing {
        repositories {
            maven {
                name = "GitHubPackages"
                url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
                credentials {
                    username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                    password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
                }
            }
        }
        publications {
            gpr(MavenPublication) {
                from(components.java)
            }
        }
    }
}

同じリポジトリ中の単一パッケージのためにKotlin DSLを使う例

plugins {
    `maven-publish`
}
publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
            }
        }
    }
    publications {
        register<MavenPublication>("gpr") {
            from(components["java"])
        }
    }
}

同じリポジトリ中の複数パッケージのためにKotlin DSLを使う例

plugins {
    `maven-publish` apply false
}
subprojects {
    apply(plugin = "maven-publish")
    configure<PublishingExtension> {
        repositories {
            maven {
                name = "GitHubPackages"
                url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
                credentials {
                    username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                    password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
                }
            }
        }
        publications {
            register<MavenPublication>("gpr") {
                from(components["java"])
            }
        }
    }
}

パッケージの公開

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

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

  1. GitHub Packagesに認証を受けてください。 詳しくは、「GitHub Packages への認証」をご覧ください。

  2. パッケージを作成した後、そのパッケージを公開できます。

     gradle publish
    

公開されたパッケージの利用

GitHub Packagesから発行されたパッケージを使用するには、依存関係としてパッケージを追加し、プロジェクトにリポジトリを追加します。 詳細については、Gradle ドキュメントの「Declaring dependencies」(依存関係の宣言) を参照してください。

  1. GitHub Packagesに認証を受けてください。 詳しくは、「GitHub Packages への認証」をご覧ください。

  2. パッケージの依存関係を build.gradle ファイル (Gradle Groovy) または build.gradle.kts ファイル (Kotlin DSL) ファイルに追加します。

    Gradle Groovyの例:

    dependencies {
        implementation 'com.example:package'
    }
    

    Kotlin DSLの例:

    dependencies {
        implementation("com.example:package")
    }
    
  3. リポジトリを build.gradle ファイル (Gradle Groovy) または build.gradle.kts ファイル (Kotlin DSL) ファイルに追加します。

    Gradle Groovyの例:

    repositories {
        maven {
            url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
            }
       }
    }
    

    Kotlin DSLの例:

    repositories {
        maven {
            url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
            }
        }
    }
    

参考資料