7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitHub Package RegistryにGradleでJARを公開する

Last updated at Posted at 2019-09-13

GitHub Package Registry

GitHubのアーティファクト公開サービスPackage Registryのベータにようやくサインアップできたので、MavenリポジトリからJARの公開を試みる。
実験に使ったリポジトリはこちら
公式

トークンの作成

Packageの権限はリポジトリとは別になっているので、既存のトークンがある人でも再発行/設定しなおしが必要になると思われる。

キャプチャ.PNG

今回はgradle.propertiesに、ユーザー名とトークンを設定しておく。この辺は環境変数などお好みで。

gradle.properties
GITHUB_USER = minebreaker
GITHUB_TOKEN = [[token]]

build.gradle

普通のMaven Publishプラグインを使用。

plugins {
    id 'maven-publish'
}

publishing {
    repositories {
        maven {
            name = "github"
            url = 'https://maven.pkg.github.com/minebreaker/Abukuma'
            credentials {
                username = project.hasProperty("GITHUB_USER") ? GITHUB_USER : ''
                password = project.hasProperty("GITHUB_TOKEN") ? GITHUB_TOKEN : ''
            }
        }
    }

    publications {
        maven(MavenPublication) {
            version '0.0.0.1-EXPLORING_GITHUB_REGISTRY'  // バージョンを指定したい場合

            pom {
                url = 'https://github.com/minebreaker/Abukuma'
                licenses {
                    license {
                        name = 'MIT'
                    }
                }
            }

            from components.java
            artifact sourcesJar
            artifact javadocJar
        }
    }
}

repositories {}で、GitHubをパッケージの公開先に指定。pomは適当に。ここでURLのminebreakerとAbukumaを、各自のユーザー名とリポジトリに置き換えること。

グループ、アーティファクト、バージョンは、デフォルトではプロジェクトの設定からそのまま利用される。上記ではversionを、実験用であることを明示するため変えてある(基本的に削除はできないので注意)。

アップロード

publishMavenPublicationToGithubRepositoryタスクを実行する。上記のリポジトリ設定のname = githubから自動でタスクを設定してくれる模様。

これで実行すると、残念なことにタスクは中途半端に失敗し、クラスファイルのJARだけ公開され、Javadocとソースはアップロードに失敗した。設定が悪いのか、Gradleを使っているのが悪いのか、GitHubが悪いのかは不明。知見求む。

ライブラリーを使う

公式ではURLがhttps://maven.pkg.github.com/OWNERとなっていたが、リポジトリ名を含めないと失敗した。仕様なのかバグなのかドキュメントのミスなのかは不明。
また、レジストリをパブリックにする設定が見つからず、ダウンロードにも認証情報を与えなければならない(ソースはパブリックなのに...)。
したがって設定は以下のようになる。

repositories {
    maven {
        url = 'https://maven.pkg.github.com/minebreaker/Abukuma'
        credentials {
            username = project.hasProperty("GITHUB_USER") ? GITHUB_USER : ''
            password = project.hasProperty("GITHUB_TOKEN") ? GITHUB_TOKEN : ''
        }
    }
}

dependencies {
    implementation 'rip.deadcode.abukuma3:abukuma-jetty:0.0.0.2-EXPLORING_GITHUB_REGISTRY'
}

まとめ

まだベータ版という印象(ベータ版だけど)。
次回はDockerを試したい。 -> GitHub Package RegistryにDocker Imageを公開する

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?