【Kotlin】kotlin-reflectを弄るためのメモ

github.com

greadle.propertiesを弄る

ビルド・テストで全論理コア使われると他アプリの動作が重くなるので、kotlin.test.junit5.maxParallelForks全論理コア数 - 最低限確保したい論理コア数にしていいかも。
以前はJDK7以前を無視するオプションも有ったがいつの間にか消えていた。

各バージョンのJDKへのパス周り

gradle.propertiesorg.gradle.java.installations.fromEnvには各バージョンのJDKへのパスを示す環境変数が定義されている。
環境変数に対応する値を追加するか、無視する場合は消す。

# Please keep it in sync with root gradle.properties.
# It's currently needed for proper configuration cache work, the reason will be investigated later
org.gradle.java.installations.fromEnv=\
  JDK_1_8,JDK_18,\
  JDK_9_0,JDK_9,\
  JDK_10_0,JDK_10,\
  JDK_11_0,JDK_11,\
  JDK_15_0,JDK_15,\
  JDK_16_0,\
  JDK_17_0

テスト周り

変更

kotlin-reflect関連はcompiler/testData/codegen/box/reflectionに有る。
特にテスト追加のような変更後はgenerateTestsIDEに保存されている内だとGenerators -> GenerateTests)を実行することで、各環境向けテスト生成を行う(この結果もコミットが必要)。

実行

kotlin -> tasks -> verification -> codegenTarget8JvmXXTestを実行すれば最低限の確認は出来る。
~JvmXXTestのバージョンはProject StructureSDKに指定されたJDKのバージョンに合わせるのが良いと思われる(例: codegenTarget8Jvm11Test)(確証は無いが、gradle側的に要求されているJava 11に合わせた状態でcodegenTarget8Jvm8Testを実行したら失敗するものが出てきてしまった)。

成果物の生成先

kotlin-reflectjarlibraries/reflect/build/libs/kotlin-reflect-${バージョン}-SNAPSHOT-sources.jarに出力される。 ベンチマーク等を取る時はこの辺りを使う。