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
向けだったため、無くても困らないかなとは思っています。