Не удается сгенерировать метаданные конфигурации загрузки Spring с помощью gradle

#java #spring-boot #maven #kotlin #gradle

#java #spring-boot #maven #kotlin #gradle

Вопрос:

Я хочу сгенерировать метаданные конфигурации загрузки Spring следующим образом:

конфигурация-метаданные-аннотации-процессор-настройка

В maven все в порядке:

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
 

Но в gradle не генерируется:

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

Существует та же проблема, что и с spring-boot-configuration-processor maven, но с gradle нет.

Плагины, которые я использовал, — это java or org.jetbrains.kotlin.jvm , not org.springframework.boot , но я не думаю, что здесь проблема (с плагином org.springframework.boot проблема все еще существует).

Комментарии:

1. Вы также делали compileJava.inputs.files(processResources) это в своем файле gradle?

2. @DonHosek Да, и compileJava.dependsOn(processResources)

3. @DonHosek Даже я запускаю tast processResources , не генерируется в META-INF

Ответ №1:

Наряду с шагами, которые вы упомянули, вам также необходимо добавить сопоставление классов. Что-то вроде приведенного ниже.

 import lombok.Data;    
import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "my.props")
@Data
public class MyProperties {

  /**
   * Prop1 description.
   */
   private String prop1;

   /**
   * Prop2 description.
   */
   private String prop2;
}
 

Это нормально — добавить класс без реквизита, но он необходим.

Пример содержимого ресурсов/META-INF/additional-spring-configuration-metadata.json

 {
   "properties": [
      {
         "name": "my.props.prop1",
         "type": "java.lang.String",
         "description": "Prop1 description",
         "defaultValue": "property 1"
      }
    ]
 }