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

pho*_*dka 6 properties intellij-idea gradle spring-boot spring-boot-configuration

我试图让Intellij使用gradle来识别我的属性。我已经按照这里的步骤进行。所以这意味着我有一个@ConfigurationProperties带有某些属性的带注释的类。

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

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

compileJava.dependsOn(processResources)
Run Code Online (Sandbox Code Playgroud)

我添加了插件(我尝试不使用插件,而只是使其成为编译依赖项,没有变化)

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'
Run Code Online (Sandbox Code Playgroud)

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

文档确实说应该调用additional-spring-configuration-metadata.json它,并且可能期望它能够被调用以对其进行处理,但是我没有看到这样的方式来使内部版本命名,也没有配置Intellij以其他方式期望它。

有没有人用gradle来工作?还是这是一个错误。

编辑我创建了一个带有两个项目的仓库来演示这一点。一种用于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
Run Code Online (Sandbox Code Playgroud)

小智 6