【发布时间】:2020-04-19 16:07:51
【问题描述】:
我已经阅读了这些文档,但我不知道在使用 Kotlin 和 Gradle 时如何将 additional-spring-configuration-metadata.json 与 kapt 合并。
https://docs.spring.io/spring-boot/docs/2.2.x/reference/html/appendix-configuration-metadata.html#configuration-metadata-annotation-processor
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-kotlin-configuration-properties
我设法通过这种方式合并它,但我想知道官方的方式。
plugins {
id("org.springframework.boot") version "2.2.2.RELEASE"
id("io.spring.dependency-management") version "1.0.8.RELEASE"
kotlin("jvm") version "1.3.61"
kotlin("plugin.spring") version "1.3.61"
kotlin("kapt") version "1.3.61"
}
dependencies {
kapt("org.springframework.boot:spring-boot-configuration-processor")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")
…
}
kapt {
arguments {
arg(
"org.springframework.boot.configurationprocessor.additionalMetadataLocations",
"$projectDir/src/main/resources"
)
}
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
【问题讨论】:
-
感谢您指出配置
org.springframework.boot.configurationprocessor.additionalMetadataLocations。我已经阅读了 spring-boot-configuration-processor 的源代码,关键位置是org.springframework.boot.configurationprocessor.MetadataStore#locateAdditionalMetadataFile。默认行为在 class output 路径中查找附加的 json 文件。但是在 gradle build 中,额外的 json 文件位于$buildDir/resources/main。 -
对我来说这看起来像是 kapt 中的一个错误。
-
我明白了。谢谢。
标签: spring-boot gradle kotlin