TL;DR
-
JMH Gradle Plugin(me.champeau.gradle.jmh)でkotlin-reflectを入れているとjmhJarがCould not expand ZIP '${キャッシュのファイルパス}/kotlin-reflect-1.4.20.jar'.というようなエラーメッセージを吐いて落ちる- 一番下の
Caused byはorg.gradle.api.file.DuplicateFileCopyingException: Encountered duplicate path "META-INF/versions/9/module-info.class" during copy operation configured with DuplicatesStrategy.FAIL
- 一番下の
-
tasks->jmhJarでMETA-INF/versions/9/module-info.classをexcludeすれば状況は改善する- 原因は
Java 9以降向けのモジュールシステム関連?
- 原因は
状況
冒頭に書いた通り、kotlin-reflectを入れているとjmhJarがCould not expand ZIP '${キャッシュのファイルパス}/kotlin-reflect-1.4.20.jar'.として落ちるようになりました。
対処
以下のように、tasks -> jmhJarにMETA-INF/versions/9/module-info.classをexcludeする設定を追加した所正常に動作するようになりました。
ここで指定しているファイルは、kotlin-reflectのjarに含まれているものです。
build.gradle.kts
// 略
tasks {
jmhJar {
exclude("META-INF/versions/9/module-info.class")
}
// 略
}
原因は正直よく分かっていませんが、META-INF/versions/9/module-info.classはJava 9以降向けの内容で、今回触っていたプロジェクトはJava 8向けだったため、無くても困らないかなとは思っています。