0
0

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 1 year has passed since last update.

GitHub PackagesにGradle+Kotlin MultiplatformでMaven Packagesを公開する

Posted at

GitHub Actionsを使うのが楽ですが、他の方法でも可能です。毎回調べているので書いておきます。
なお今回はKotlin DSLでGradleのビルドスクリプトを書きます。

チェックリスト

  • publishingにGitHub Packagesのリポジトリが追加されているか
  • 認証情報が追加されているか
  • gradlewのパーミッションが実行可能か
  • build publishToMavenLocalが正常に実行できるか

環境

  • Windows 10
  • Intellij IDEA
  • GitHub EducationとPro
  • Java 11
  • Kotlin 1.8.10
  • Gradle 7.4.2
  • Gradle Kotlin DSL

公開する

GitHub Packagesのリポジトリを追加する。

公開先のリポジトリを追加します。

プラグインの追加

Gradleのプラグインとして、maven-publishが必要になります。

build.gradle.kts
plugins {
    kotlin("multiplatform") version "1.8.10"
    id("maven-publish")
}

リポジトリの追加

urlの部分はhttps://maven.pkg.github.com/{OWNER}/{REPOSITORY}です。
これを間違えると消せなくなるらしいのでご注意を…
credentialsの部分は環境によって変えてください。1
下の例はGitHub Actionsで実行する場合、そのまま使えます。

build.gradle.kts
plugins {
    //さっきの
}

kotlin{
    //省略
}

android{
    //省略
}

publishing{
    repositories{
        maven{
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/multim-dev/emoji-kt")
            credentials {
                username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
            }
        }
    }
}

CIを構成する

環境変数にユーザー名とトークンを追加するだけです。

GitHub Actionsの場合、

Publish Java Package with Gradleというものを使うことで数クリックで追加できます。
Java 11の場合本当に何もしなくても使えるので便利です。

その他 TeamCityとかの場合

なぜTeamCityなのか、私が使っているからです。
上の例をそのまま使った場合
env.USERNAME にユーザー名
env.TOKEN にトークン
を追加します。
要は環境変数に追加するだけです。

gradlewが実行できるようにする

これのためにこの記事を書いたと言ったら過言
これを忘れるとGitHub Actionsでコケます。普段はIDEの機能を使うので忘れがちです。
git update-index --chmod=+x gradlew

ここでGitHubにプッシュ

build publishToMavenLocalが正常か

変なことしてなければ大抵は動きますが、マルチプロジェクト構成だったりすると失敗することもあるのでとりあえずMaven Localにpublishしてみます。
Maven Localは初期だと ~/.m2/repositoryにあります。

確認すること

注意点
androidに関しては単に追加するだけでは作成してくれません2

  • ビルドが正常に通るか、作成したいものが作成されているか(当たり前ですが…)
  • {group}/{rootProject.name}があるか
  • {group}/{rootProject.name}-jvmがあるか
  • {group}/{rootProject.name}-jsがあるか
  • その他構成したプラットフォームのものがあるか
  • local.propertiesや他の設定ファイルがなくても実行できるか

注意点
Kotlin Multiplatformの場合、publishするものの設定をしなくてもデフォルトで設定されています。

公開する

GitHub Actionsの場合

GitHub ActionsでPublish Java Package with Gradleをそのまま使用した場合、リリースするとActionsが実行されます。テスト時はversionをSNAPSHOTでやるといいと思います。

その他

gradlew build publish
が実行されるように設定してください

最後に

使用するときも認証情報を追加する必要があります。面倒ですがまぁ…
これが今回作ったやつkmp-logger
Kotlin Multiplatformでslf4jとAndroidのloggerとconsole.logを使えます。

  1. https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry

  2. https://kotlinlang.org/docs/multiplatform-publish-lib.html#publish-an-android-library

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?