2017-07-13 100 views
2

经与摇篮设置一个科特林项目。科特林对gradle这个kapt插件不自定义源组(江铃控股)

但是当我添加自定义源设置为江铃控股:从SRC

sourceSets { 
    jmh { 
     compileClasspath += sourceSets.test.runtimeClasspath 
     runtimeClasspath += sourceSets.test.runtimeClasspath 
    } 
} 

并移动基准/主/科特林的src /江铃控股有限公司/科特林,执行基准测试失败:

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 

任何想法如何解决这个问题?

+1

它看起来并不像基于Java的基础gradle这个项目江铃控股或gradle这个(我用江铃控股有限公司的一个问题jmh基准测试的自定义源代码集没有任何问题)。 kotlin也不是问题,因为将基于kotlin的基准放入默认的源代码集中。所以,看起来像kotlin-kapt中的一个bug,你应该将它报告给JetBrains。 –

回答

2

kapt在此上下文中定义了用于设置的kapt配置主要来源的依赖性,就像compileruntime做。

dependencies { 
    kaptJmh 'org.openjdk.jmh:jmh-generator-annprocess:1.18' 
} 

解决了我的问题。

我预期的类推是jmhKaptjmhCompile,但这会产生

Couldn't find method jmhCapt 
+0

非常感谢您解决这个难题! – oae