有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java IntelliJ IDEA找不到生成的配置元数据文件

在我的项目中,我使用spring-boot-configuration-processor来生成配置元数据,这在设置@ConfigurationProperties标记的类中的字段时非常有用。属性文件。 作为构建系统,我使用Gradle

类中包含JavaDoc的配置如下所示:

@Configuration
@ConfigurationProperties(prefix = "user-config")
public class UserSettings {
    /**
     * User name.
     */
    private String name;

    // getters & setters
}

我在Gradle中导入spring-boot-configuration-processor依赖项,如下所示:

annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'

问题是IntelliJ IDEA找不到生成的文件spring-configuration-metadata.json,当从Gradle执行build任务时,该文件被放入文件夹/build/classes/java/main/META-INF中

我做了一些研究,发现IDEA使用out/production/classes路径作为生产输出,而Gradle使用build/classes/java/main路径

然后我来到这个问题,我找到了一个解决方案:https://stackoverflow.com/a/55516113/8521177。正如上面所指出的,有两种解决方案:

  1. 在IDEA中手动配置Spring Boot Annotation处理器(这是不可接受的,因为这将迫使在我的项目中工作的所有人都这样做)
  2. 将IDEA输出路径设置为与此答案中指出的Gradle路径相同:https://stackoverflow.com/a/46420842/8521177,这样IDEA将找到spring-configuration-metadata.json生成的元数据文件

另一种方法是手动将生成的文件放入src/main/resources/META-INF中,并使用该文件夹中的文件部署应用程序

第二个解决方案已经解决了,但在评论中的同一个答案中,我看到了@CrazyCoder的回答-Intellij - set default output path to gradle output,这意味着gradle idea已经过时,应该在IDEA中使用'delegate'选项。我打开了这个选项,IDEA现在在和Gradle do相同的文件夹中生成输出,但IDEA再次找不到生成的元数据文件,因为输出路径再次设置为out/

那么,考虑到我不想强迫用户手动操作,让IDEA识别生成的文件的正确解决方案是什么

另外,我自动添加了以下源路径:build/sources/annotationProcessor/java/main。我不知道它是什么,从哪里来的,文件夹是空的,但可以有解决方案吗?也许我可以让spring boot配置处理器在这个文件夹中生成文件

UPD:我使用IntelliJ IDEA 2019.1.3(终极版)、Gradle 5.4.1、Spring Boot 2.1.5


共 (0) 个答案