如何更改 kapt 插件生成输出目录路径?
Posted
技术标签:
【中文标题】如何更改 kapt 插件生成输出目录路径?【英文标题】:How to change kapt plugin generate output dir path? 【发布时间】:2019-12-23 06:52:58 【问题描述】:我尝试使用kapt
和vertx-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】:生成 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 注释处理器时,您可以使用 -s dir
javac argument 覆盖此路径,但此值在 Kapt 中硬编码为 "generated/source/kapt/$sourceSetName"
(see source code)。
因此,更改生成的 Java 的输出目录似乎是不可能的。
(是的,"generated/source/kaptKotlin/$sourceSetName"
也是硬编码的,但它被用作"kapt.kotlin.generated"
选项的默认值。)
【讨论】:
以上是关于如何更改 kapt 插件生成输出目录路径?的主要内容,如果未能解决你的问题,请参考以下文章
添加 Kapt 插件后 - 执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障
Maven 编译器插件:如何更改 testCompile 的类路径值?