gradle 的 Kotlin kapt 插件不适用于自定义源集 (JMH)
Kotlin's kapt plugin for gradle does not work for custom source set (JMH)
有一个 Gradle 设置的 Kotlin 项目:
apply plugin: 'kotlin'
apply plugin: 'kotlin-kapt'
dependencies {
kapt 'org.openjdk.jmh:jmh-generator-annprocess:1.18'
...
}
将基准放在 src/main/kotlin 下没有问题。
但是当我为 JMH 添加自定义源集时:
sourceSets {
jmh {
compileClasspath += sourceSets.test.runtimeClasspath
runtimeClasspath += sourceSets.test.runtimeClasspath
}
}
并将基准从 src/main/kotlin 移动到 src/jmh/kotlin,执行基准失败:
Exception in thread "main" java.lang.RuntimeException: ERROR: Unable to find the resource: /META-INF/BenchmarkList
at org.openjdk.jmh.runner.AbstractResourceReader.getReaders(AbstractResourceReader.java:98)
at org.openjdk.jmh.runner.BenchmarkList.find(BenchmarkList.java:122)
at org.openjdk.jmh.runner.Runner.internalRun(Runner.java:256)
at org.openjdk.jmh.runner.Runner.run(Runner.java:206)
at org.openjdk.jmh.Main.main(Main.java:71)
看起来 kaptJmhKotlin 没有做任何事情:
kaptGenerateStubsJmhKotlin UP-TO-DATE
Skipping task ':kaptJmhKotlin' as it has no source files and no previous output files.
:kaptJmhKotlin NO-SOURCE
:compileJmhKotlin
知道如何解决这个问题吗?
kapt
在此上下文中定义了 主源集 的 kapt
配置的依赖项,就像 compile
和 runtime
做。
dependencies {
kaptJmh 'org.openjdk.jmh:jmh-generator-annprocess:1.18'
}
为我解决了问题。
我预计它会是 jmhKapt
类比 jmhCompile
,但是这会产生
Couldn't find method jmhCapt
有一个 Gradle 设置的 Kotlin 项目:
apply plugin: 'kotlin'
apply plugin: 'kotlin-kapt'
dependencies {
kapt 'org.openjdk.jmh:jmh-generator-annprocess:1.18'
...
}
将基准放在 src/main/kotlin 下没有问题。
但是当我为 JMH 添加自定义源集时:
sourceSets {
jmh {
compileClasspath += sourceSets.test.runtimeClasspath
runtimeClasspath += sourceSets.test.runtimeClasspath
}
}
并将基准从 src/main/kotlin 移动到 src/jmh/kotlin,执行基准失败:
Exception in thread "main" java.lang.RuntimeException: ERROR: Unable to find the resource: /META-INF/BenchmarkList
at org.openjdk.jmh.runner.AbstractResourceReader.getReaders(AbstractResourceReader.java:98)
at org.openjdk.jmh.runner.BenchmarkList.find(BenchmarkList.java:122)
at org.openjdk.jmh.runner.Runner.internalRun(Runner.java:256)
at org.openjdk.jmh.runner.Runner.run(Runner.java:206)
at org.openjdk.jmh.Main.main(Main.java:71)
看起来 kaptJmhKotlin 没有做任何事情:
kaptGenerateStubsJmhKotlin UP-TO-DATE
Skipping task ':kaptJmhKotlin' as it has no source files and no previous output files.
:kaptJmhKotlin NO-SOURCE
:compileJmhKotlin
知道如何解决这个问题吗?
kapt
在此上下文中定义了 主源集 的 kapt
配置的依赖项,就像 compile
和 runtime
做。
dependencies {
kaptJmh 'org.openjdk.jmh:jmh-generator-annprocess:1.18'
}
为我解决了问题。
我预计它会是 jmhKapt
类比 jmhCompile
,但是这会产生
Couldn't find method jmhCapt