gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:42:27 43 4
gpt4 key购买 nike

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

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

my file

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/ .你能帮助我吗...?

最佳答案

生成 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 源代码时,注释处理器使用 Filer初始化为 javac context .使用 Java Annotation Processor 时,您可以使用 -s dir 覆盖此路径。 javac argument ,但这个值在 Kapt 中被硬编码为 "generated/source/kapt/$sourceSetName" ( see source code )。
因此,更改生成的 Java 的输出目录似乎是不可能的。
(是的, "generated/source/kaptKotlin/$sourceSetName" 也是硬编码的,但它被用作 "kapt.kotlin.generated" 选项的默认值。)

关于kotlin - 如何更改 kapt 插件生成输出目录路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57533249/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com