【问题标题】:How to merge additional-spring-configuration-metadata.json with kapt when using Kotlin and Gradle?使用 Kotlin 和 Gradle 时如何将 additional-spring-configuration-metadata.json 与 kapt 合并?
【发布时间】:2020-04-19 16:07:51
【问题描述】:

我已经阅读了这些文档,但我不知道在使用 Kotlin 和 Gradle 时如何将 additional-spring-configuration-metadata.jsonkapt 合并。
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


【解决方案1】:

在此处添加答案以获得更好的可见性。这是 Kapt maven 插件中的一个已知问题,它无法确保在注释处理器运行时编译类路径可用。实现看不到文件,因此不会合并它。

您的解决方法有效,但 JetBrains 问题跟踪器中有一个问题 you can vote for

【讨论】:

    猜你喜欢
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多