java - IntelliJ IDEA 找不到生成的配置元数据文件
问题描述
在我的项目中,我使用spring-boot-configuration-processor
生成配置元数据,这有助于在@ConfigurationProperties
.properties 文件中设置标记类中的字段。作为构建系统,我使用 Gradle。
类中带有 JavaDoc 的配置如下所示:
@Configuration
@ConfigurationProperties(prefix = "user-config")
public class UserSettings {
/**
* User name.
*/
private String name;
// getters & setters
}
我spring-boot-configuration-processor
像这样在 Gradle 中导入依赖项:
annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'
问题是 IntelliJ IDEA 在从 Gradle 执行任务时找不到生成的文件spring-configuration-metadata.json
,该文件被放入文件夹 /build/classes/java/main/META-INF中。build
我做了一些研究,发现 IDEA 使用 out/production/classes 路径进行生产输出,但 Gradle 使用 build/classes/java/main 路径。
然后我来到了这个 SO 问题,在那里我找到了解决方案:https ://stackoverflow.com/a/55516113/8521177 。正如那里所指出的,有两种解决方案:
- 在 IDEA 中手动配置 Spring Boot 注释处理器(这是不可接受的,因为它会强制在我的项目中工作的每个人都这样做)
- 将 IDEA 输出路径设置为与此答案中指出的 Gradle 路径相同:https ://stackoverflow.com/a/46420842/8521177 ,因此 IDEA 将找到
spring-configuration-metadata.json
生成的元数据文件。
另一种是将生成的文件手动放入 src/main/resources/META-INF 并在此文件夹中使用该文件部署应用程序。
第二种解决方案已经制定出来,但是在评论中的相同答案中,我看到了@CrazyCoder 的回复 - Intellij - 将默认输出路径设置为 gradle output,这意味着gradle idea
它已经过时,应该在 IDEA 中使用“委托”选项。我打开了这个选项,IDEA 现在在与 Gradle 相同的文件夹中生成输出,但 IDEA 再次找不到生成的元数据文件,因为输出路径再次设置为 out/。
那么,考虑到我不想强迫用户手动执行某些操作,让 IDEA 识别这个生成的文件的正确解决方案是什么?
PS - 另外,我有以下自动添加的源路径:build/sources/annotationProcessor/java/main
. 我不知道它是什么以及它来自哪里,该文件夹是空的,但是可以解决它吗?也许我可以让spring boot配置处理器在这个文件夹中生成生成的文件?
UPD:我使用 IntelliJ IDEA 2019.1.3(终极版)、Gradle 5.4.1、Spring Boot 2.1.5。
解决方案
推荐阅读
- spring - EnvironmentProcessor 中的自动装配 bean 为空
- javascript - 为什么python和javascript在同一日期显示不同的时间戳
- python - 带有命名元组的 Python random.choices 索引
- android - sqlite GROUP BY 和 ORDER
- c++ - 包含朋友类的循环参考问题
- r - R - 向英国地方当局 choropleth 地图 ggplot 添加点
- amazon-kinesis - 将 AWS Timestream 表导出为 JSON/CSV
- xml - 使用 xslt 或 xpath 使用 xslt 1.0 或 2.0 将 xml 字符串转换为 NodeSet
- python - 接收您的 Pipfile 需要 python_version 3.7,但您在运行 pytest 时使用未知,即使我安装了 Python 3.7.0
- github-api - gihtub API 使用存储库 ID 作为参数获取问题