当使用Kotlin和Gradle时,如何在kapt中合并additional-spring-configuration-metadata.json?

4
我已经阅读了这些文档,但不知道如何在使用 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。 默认行为在类输出路径中查找附加的json文件。 但在gradle构建中,附加的json文件位于$buildDir/resources/main - JasonMing
我认为那看起来像是kapt中的一个bug。 - Stephane Nicoll
我明白了。谢谢。 - hirakida
1个回答

2

为了更好地展示,这里添加一个答案。这是Kapt Maven插件中已知的问题,它在注解处理器运行时不确保编译类路径可用。实现无法看到该文件,因此无法合并它。

您的解决方法有效,并且在JetBrains问题跟踪器中有一个问题可以投票


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