【问题标题】:Read resources in annotation processor with kotlin and kapt使用 kotlin 和 kapt 读取注释处理器中的资源
【发布时间】:2020-07-07 10:43:11
【问题描述】:

我想使用一个注解处理器,在处理过程中需要从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

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

谢谢!

【问题讨论】:

    标签: kotlin gradle gradle-kotlin-dsl kapt


    【解决方案1】:

    如果您在src/main/resources 下有resource-operation.vm,请确保使用/resource-operation.vm 引用它

    【讨论】:

      【解决方案2】:

      我得到了它与以下 kapt 配置一起使用

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-17
        • 1970-01-01
        • 2017-10-22
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 2017-10-26
        • 2023-03-04
        相关资源
        最近更新 更多