如何更改 kapt 插件生成输出目录路径?

8

我尝试使用kaptvertx-Codegen生成我的服务,但输出路径是/build/generated/source/kapt/main/。我想要的是/src/main/generated/

build.gradle.kts中配置,我发现只有adoc文件生成到了/src/main/generated/,其他文件没有变化。

我的文件

这是build.gradle.kts文件。

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
  kotlin("jvm") version "1.3.30"
  kotlin("kapt") version "1.3.30"
  id("io.vertx.vertx-plugin") version "0.8.0"
}
val vertxVersion = "3.8.0"
// ......
tasks.withType<KotlinCompile> {
  kotlinOptions {
    freeCompilerArgs = listOf("-Xjsr305=strict")
    jvmTarget = "1.8"
  }
}
dependencies {
  // ....
    implementation("io.vertx:vertx-codegen")
    kapt("io.vertx:vertx-service-proxy:$vertxVersion:processor")
    kapt("io.vertx:vertx-codegen:$vertxVersion:processor")
  // ....
}

kapt{
  arguments {
    arg("codegen.output", project.file("src/main/generated").path)
    arg("kapt.kotlin.generated", project.file("src/main/generated").path)
  }
  javacOptions {
    option("-AoutputDirectory", project.file("src/main/generated").path)
    option("-Acodegen.output", project.file("src/main/generated").path)
  }
}

我期望的输出路径是 /src/main/generated/,但实际的输出路径是 /build/generated/source/kapt/main/。你能帮我解决一下吗?

1个回答

0

生成 Kotlin 源码:

我通过使用 javac 参数解决了生成的 Kotlin 源代码问题:

val generatedKotlinSources = project.file("src/main/generated").path
kapt {
    javacOptions {
        option("-Akapt.kotlin.generated=$generatedKotlinSources")
    }
}

令人惊讶的是,option("-Akapt.kotlin.generated", generatedKotlinSources) 没有起作用。

使用注解处理器时,此解决方案可与 processingEnv.options["kapt.kotlin.generated"] 一起使用,如 Annotation Processing with Kotlin 页面所述。

生成 Java 源代码:

然而,在生成Java源代码时,注解处理器使用初始化为javac contextFiler。当使用Java注解处理器时,可以通过使用-s dirjavac参数来覆盖此路径,但是在Kapt中,此值已硬编码为"generated/source/kapt/$sourceSetName"(请参阅源代码)。

因此,更改生成的Java输出目录似乎不可能。

(是的,"generated/source/kaptKotlin/$sourceSetName"也是硬编码的,但它被用作"kapt.kotlin.generated"选项的默认值。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接