首页 > 解决方案 > 使用 kotlin 和 kapt 读取注释处理器中的资源

问题描述

我想使用需要src/main/resources在处理过程中读取文件的注释处理器。使用 java 作为源时,它适用于以下配置:

tasks.withType<JavaCompile> {
    options.sourcepath = files("src/main/resources")
}

我现在正在尝试将相同的注释处理器与 kotlin 和 kapt 一起使用,但是它总是失败并出现文件未找到异常。

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':cap-crd:kaptKotlin'.
...
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
...
Caused by: java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.reflect.InvocationTargetException
...
Caused by: com.sun.tools.javac.processing.AnnotationProcessingError: java.lang.RuntimeException: java.io.FileNotFoundException: resource-operation.vm
...
Caused by: java.lang.RuntimeException: java.io.FileNotFoundException: resource-operation.vm
at io.sundr.transform.internal.VelocityTransformationProcessor.process(VelocityTransformationProcessor.java:128)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt)
at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:147)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:972)
... 47 more
Caused by: java.io.FileNotFoundException: resource-operation.vm
at jdk.compiler/com.sun.tools.javac.processing.JavacFiler.getResource(JavacFiler.java:586)
at io.sundr.transform.internal.VelocityTransformationProcessor.readTemplate(VelocityTransformationProcessor.java:223)
at io.sundr.transform.internal.VelocityTransformationProcessor.process(VelocityTransformationProcessor.java:124)
... 50 more

到目前为止,我没有找到与 kotlin/kapt 的 options.sourcepath 的等效配置,以便注释处理器能够访问文件。

谢谢!

标签: kotlingradlegradle-kotlin-dslkapt

解决方案


我让它与以下 kapt 配置一起使用

kapt {
    javacOptions {
        option("--source-path", file("src/main/resources").absolutePath)
    }
}

推荐阅读