无法使用 gradle 生成 Spring Boot 配置元数据
Posted
技术标签:
【中文标题】无法使用 gradle 生成 Spring Boot 配置元数据【英文标题】:Cannot generate Spring Boot configuration metadata with gradle 【发布时间】:2021-05-30 15:22:55 【问题描述】:我想生成 Spring Boot 配置元数据,用这种方式:
configuration-metadata-annotation-processor-setup
在 Maven 中,没关系:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
但在 gradle 中,没有生成:
dependencies
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
spring-boot-configuration-processor
也有同样的问题,maven 可以,但是 gradle 不行。
我使用的插件是java
或org.jetbrains.kotlin.jvm
,不是org.springframework.boot
,但我不认为这是问题所在(使用插件org.springframework.boot
,问题仍然存在)。
【问题讨论】:
你是否也在你的 gradle 文件中做了compileJava.inputs.files(processResources)
?
@DonHosek 是的,compileJava.dependsOn(processResources)
@DonHosek 即使我运行 tast processResources
,在 META-INF 中也没有生成
【参考方案1】:
除了您提到的步骤之外,您还需要添加一个类映射。如下所示。
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "my.props")
@Data
public class MyProperties
/**
* Prop1 description.
*/
private String prop1;
/**
* Prop2 description.
*/
private String prop2;
添加一个没有props的类是可以的,但它是必需的。
资源的示例内容/META-INF/additional-spring-configuration-metadata.json
"properties": [
"name": "my.props.prop1",
"type": "java.lang.String",
"description": "Prop1 description",
"defaultValue": "property 1"
]
【讨论】:
以上是关于无法使用 gradle 生成 Spring Boot 配置元数据的主要内容,如果未能解决你的问题,请参考以下文章
Swagger Gradle 插件在构建期间没有为 spring mvc 正确生成 openapi.json 文件
Gradle:带有用于 Spring Boot 的 jvm 参数的自定义任务
Spring Tool Suite 无法使用 Gradle 创建新项目:无法使用 Gradle (STS) 导入,因为未安装 STS Gradle Tooling
在 Spring Boot 中使用 Gradle 从 Swagger OpenAPI 生成 RestClient 存根
如何使用 Spring Boot“bootJar”插件创建 gradle 任务以生成爆炸性战争?
使用带有 Spring Boot、Gradle 和 Idea 的 querydsl 时 QClasses 中未解析的符号