У меня проблемы с IntelliJ при получении пользовательских метаданных конфигурации Spring с Gradle.
Если я создаю новый проект Spring Boot с помощью Initializer, включите процессор конфигурации в зависимости в наборе задач Gradle.следующие задачи
создают класс с содержимым:
package com.example.demo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties("mycustomconfig")
public class MyCustomConfig {
private String name;
public String getName() {
return name;
}
public MyCustomConfig setName(String name) {
this.name = name;
return this;
}
}
, тогда IntelliJ жалуется в файле класса "SpringПроцессор аннотации конфигурации загрузки не найден в classpath ", даже если он определенно находится в classpath.
После запуска приложения в build/classes/java/main/META-INF/spring-configuration-metadata.json
создается файл со следующим содержимым:
{
"groups": [
{
"name": "mycustomconfig",
"type": "com.example.demo.MyCustomConfig",
"sourceType": "com.example.demo.MyCustomConfig"
}
],
"properties": [
{
"name": "mycustomconfig.name",
"type": "java.lang.String",
"sourceType": "com.example.demo.MyCustomConfig"
}
],
"hints": []
}
Но IntelliJ потом жалуется в application.properties: Cannot resolve configuration property "mycustomconfig.name".
Тот же эксперимент работает безупречно с Maven.Я что-то не так делаю?
Я использую IntelliJ 2018.3 Ultimate.
Мой build.gradle:
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}