问题
Having a Kotlin project with Gradle setup:
apply plugin: 'kotlin'
apply plugin: 'kotlin-kapt'
dependencies {
kapt 'org.openjdk.jmh:jmh-generator-annprocess:1.18'
...
}
Putting benchmarks under src/main/kotlin works without problems.
But when i add a custom source-set for JMH:
sourceSets {
jmh {
compileClasspath += sourceSets.test.runtimeClasspath
runtimeClasspath += sourceSets.test.runtimeClasspath
}
}
And move the benchmarks from src/main/kotlin to src/jmh/kotlin, executing the benchmarks fails with:
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)
It looks like kaptJmhKotlin isn't doing anything:
kaptGenerateStubsJmhKotlin UP-TO-DATE
Skipping task ':kaptJmhKotlin' as it has no source files and no previous output files.
:kaptJmhKotlin NO-SOURCE
:compileJmhKotlin
Any idea how to resolve the problem ?
回答1:
kapt
in this context defines a dependency for the main source set's kapt
configuration, just like compile
and runtime
do.
dependencies {
kaptJmh 'org.openjdk.jmh:jmh-generator-annprocess:1.18'
}
fixes the problem for me.
I expected it to be jmhKapt
by analogy with jmhCompile
, but this produces
Couldn't find method jmhCapt
来源:https://stackoverflow.com/questions/45085806/kotlins-kapt-plugin-for-gradle-does-not-work-for-custom-source-set-jmh