spring-boot - 如何让 Intellij 识别 application.yml 中的属性

标签 spring-boot gradle intellij-idea properties spring-boot-configuration

我试图让 Intellij 使用 gradle 识别我的属性。我已按照步骤操作 here .所以这意味着我有一个 @ConfigurationProperties带有一些属性的带注释的类。

我添加了 spring 依赖来处理它们:

dependencies {
    optional "org.springframework.boot:spring-boot-configuration-processor"
}

compileJava.dependsOn(processResources)

我添加了插件(我试过不使用插件,只是让它成为编译依赖项,没有改变)
buildscript {
    repositories {
        maven { url 'http://repo.spring.io/plugins-release' }
    }
    dependencies { classpath 'io.spring.gradle:propdeps-plugin:0.0.9.RELEASE' }
}

apply plugin: 'propdeps'
apply plugin: 'propdeps-maven'
apply plugin: 'propdeps-idea'

当我运行构建时,我看到一个 build/classes/java/main/META-INF/spring-configuration-metadata.json文件是根据我的属性创建的。
当我尝试在 application.yml 中使用该属性时或 application.properties ,Intellij 说它无法解决它。

文档确实说它应该被称为 additional-spring-configuration-metadata.json并且可能期望它被调用来处理它,但我没有看到一种方法可以使构建名称以这种方式命名,也没有将 Intellij 配置为其他方式。

有没有人在 gradle 中使用过这个?或者这是一个错误。

编辑 我创建了一个 repo用一对项目来证明这一点。一种用于 gradle,一种用于 maven。我从 start.spring.io 创建了项目,基本上只是添加了属性配置。在这两种情况下,我还使用了直接编译依赖项,而不是可选的/compileOnly。

我之前没有确认过这一点,但代码辅助确实适用于 Maven,但不适用于 gradle。两者都创建了一个 spring-configuration-metadata.jsonMETA-INF在它们各自的构建文件夹中。我不完全确定谁没有拿起它。

其他相关版本
Intellij: 2017.3.4
Springboot: 1.5.9
Gradle: 4.4.1
Java: 8.161

最佳答案

  • Turn the annotation processing on
  • 不要delegate IDE build/run actions to Gradle
  • 在 IDE 中重建您的项目:构建 -> 重建项目
  • 关于spring-boot - 如何让 Intellij 识别 application.yml 中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48675377/

    相关文章:

    java - 使用 Spring boot 加载 keras 模型

    java - Spring Cloud微服务,与其他微服务一起使用受密码保护的微服务

    google-app-engine - 无法实例化 LocalCloudDatastoreV1Service

    gradle - Gradle如何在ProjectBuilder中使用自定义buildFile

    java - Intellij无法打开maven项目

    html - Spring Boot 不提供来自 html 文件的 css 内容

    spring-boot - Spring Boot 2 转换持续时间 java 8 application.properties

    java - 想要在 build.gradle 中指定 jar 名称和版本

    java - 找不到 Gradle 插件 ‘java-library’

    java - 在 IntelliJ IDEA 中的 Debug模式下设置最终字段的值