#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"
}
]
}