Help us understand the problem. What is going on with this article?

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

GitHub Package Registry

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

トークンの作成

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

キャプチャ.PNG

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

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

build.gradle

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

apply plugin: '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を公開する

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away