kapt:如何处理测试资源?
我有一个使用kapt进行注释处理和代码生成的项目(基于注释)。 它在主要来源工作,但不在测试来源。
有些来源(例如如何在androidTest范围中使用kapt )建议运行gradle kaptTest
,但是这也不起作用。 它将任务报告为“最新”,甚至在清理干净之后。 也许这个建议是唯一的android。
我从https://github.com/JetBrains/kotlin-examples/tree/master/gradle/kotlin-code-generation下载了示例项目,在测试源中添加了一个注释用法,我在那里得到了相同的行为。 它适用于主要来源,不适用于测试来源。
输出中唯一奇怪的是:
> Task :example:compileKotlin Using kotlin incremental compilation w: [kapt] Sources output directory is not specified, skipping annotation processing
但是正如你所看到的,这不是测试来源,而是主要来源,而注释处理器就是应用在那些上。
我在注释处理器中添加了一个打印输出。 它显示为compileKotlin,但不是compileTestKotlin。
那么,使kapt在测试源上工作的魔术是什么?
PS:我想有人会问我的build.gradle。 这与我链接的例子是一样的,所以如果你能使它适用于这个例子,我可以集成到我的构建文件中。
PPS:我发现只有类似的问题是Kotlin的kapt插件for gradle不能用于自定义源集(JMH) ,他们建议发布一个bug报告。 所以也许这是kapt-gradle-plugin中的一个bug?
有些来源(例如如何在androidTest范围中使用kapt)建议运行gradle kaptTest,但是这也不起作用。
你误解了这个建议。 它表示应该使用kaptTest
来代替dependencies
块中的kapt
,正如这里所描述的那样,而不是你应该以不同的方式运行Gradle。 OTOH,文档还特别说
请注意,kaptAndroidTest和kaptTest扩展了kapt,所以您可以只提供kapt依赖关系,它可以用于生产源和测试。
所以那里似乎确实有一个bug。
我已经在https://youtrack.jetbrains.com/issue/KT-21891链接了这个问题。 我不想提出一个单独的错误,因为我不知道哪个Gradle / Kotlin / Kotlin Gradle插件/等等。 你有过。
- Kotlin /本机安装错误:未找到'jni.h'文件
- 许多小模块,或几个大型模块的最佳构建性能?
- 什么是Kotlin Gradle依赖关系中的“实现”?
- 如何运行./gradlew测试
- 无法使用Android Gradle插件3.0.1解决assembleAndroidTest任务的依赖关系
- Android,Gradle,Realm,Kotlin:错误:错误:找不到AndroidManifest.xml文件
- 如何将kotlin-js-library更新为1.1.3,就像kotlin-gradle-plugin一样?
- 即使没有任何更改,Android多模块Gradle构建也会很慢
- 使用Gradle从Kotlin链接到JVM的asm定义的类