LoginSignup
0
0

JitPackでJDK1.8以外をつかうときにする設定

Last updated at Posted at 2024-02-18

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一覧はここをブラウザで開いちゃうのが楽

どうなった

  • 以下のような.sdkmanrcjitpack.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でシリアライズするライブラリを作っている途中でぶつかった
  • こっちのライブラリのフィードバックください(趣味でパスキーを管理するバックエンドを持っている人が少なくて使用感が絶妙にわからん

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