JitPackとは
- JitPackはGitHub等のVCS Hostingサービスから特定のコミットハッシュのソースコードを取得してビルドし、artficatのHostingを行ってくれるサービス
- MavenCentral(sonatype)はPGPによる署名が必要だったりリリースするために設定する項目があるがJitPackの場合は取り合えず
MavenLocal
にpublishさえできればOKなためお手軽 - 多くのユーザーに使われていないライブラリはビルドされたartifactが削除された状態になっているため、利用者側が使用しようとしたときにartifactのビルド時間分だけ依存解決に時間がかかるようになってしまう
android向けライブラリを配信するときに詰まるところ
- AGP8.0以降を使用する場合、ビルドにはJDK17が必要となる
- JitPackのデフォルトランタイムはJDK1.8が設定されているため、ビルドが通らない
どうする
- 設定ファイルを追加してJDK17をJitPackのランタイムに入れる
- 公式には以下の通りに記載がある
JitPack will compile projects using OpenJDK Java 8. See the example projects on how to set a different target version in your build file.
Maven projects that specify a target version in their pom will be built with that target version.
If your project uses Travis or Circle CI then JitPack will read the lowest jdk version from yml file and use that to build.
Alternatively create a jitpack.yml file in the root of your repository and specify a jdk version:
-
jitpack.yml
というファイルを作ってopenjdk${jdk_version}
を指定するかSDKMANを使って自分でいれてねとのことらしい - 宗教上の理由でJDK distributionは
Adoptium
しか使わないのでローカルと環境を揃える意味で.sdkmanrc
をバージョン管理に含めてしまうのが楽そう - SDKMANでpublishされているJDK一覧はここをブラウザで開いちゃうのが楽
どうなった
- 以下のような
.sdkmanrc
とjitpack.yml
をバージョン管理に追加することでJitPack側でのビルドが通るようになった
.sdkmanrc
java=17.0.10-tem
jitpack.yml
before_install:
- source "$HOME/.sdkman/bin/sdkman-init.sh"
- sdk update
- sdk env install
おわりに
- WebAuthnのJSON類をGOSNやJacksonを使わず、Moshi or Kotlinx Serializationでシリアライズするライブラリを作っている途中でぶつかった
- こっちのライブラリのフィードバックください(趣味でパスキーを管理するバックエンドを持っている人が少なくて使用感が絶妙にわからん