В моем проекте я использую spring-boot-configuration-processor
для генерации метаданных конфигурации, что может быть полезно при настройке полей в @ConfigurationProperties
отмеченных классах из файлов .properties.
В качестве системы сборки я использую Gradle.
Конфигурация с JavaDoc в классе выглядит следующим образом:
@Configuration
@ConfigurationProperties(prefix = "user-config")
public class UserSettings {
/**
* User name.
*/
private String name;
// getters & setters
}
И я импортирую spring-boot-configuration-processor
зависимость в Gradle следующим образом:
annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'
Проблема в том, что IntelliJ IDEA не может найти сгенерированный файл spring-configuration-metadata.json
, который помещается в папку / build / classes / java / main / META-INF при выполнении задачи build
из Gradle.
Я провел некоторое исследование и выяснил, что IDEA использует путь out / production / classes для вывода продукции, но Gradle использует путь build / classes / java / main.
Затем я пришел к такому вопросу, в котором нашел решение: https://stackoverflow.com/a/55516113/8521177. Как указывалось, есть два решения:
- Сконфигурировать процессор аннотации Spring Boot вручную в IDEA (что недопустимо, потому что это заставит делать это всех, кто работает в моем проекте)
- Установите выходной путь IDEA таким же, как путь Gradle, как указано в этом ответе: https://stackoverflow.com/a/46420842/8521177,, чтобы IDEA нашла
spring-configuration-metadata.json
сгенерированный файл метаданных.
И еще один способ - поместить сгенерированный файл в src / main / resources / META-INF вручную и развернуть приложение с файлом в этой папке.
Второе решение разработано, но затем в том же ответе в комментариях я увидел ответ @ CrazyCoder - Intellij - установить путь вывода по умолчанию для вывода Gradle , который говорит, что gradle idea
устарел и нужно использовать опцию «делегировать» в IDEA. Я включил эту опцию, и теперь IDEA производит вывод в той же папке, что и Gradle, но IDEA снова не может найти сгенерированный файл метаданных, так как путь вывода снова установлен как out /.
Итак, как правильно IDEA распознает этот сгенерированный файл, учитывая, что я не хочу заставлять пользователя что-то делать вручную?
P.S. - Кроме того, у меня есть следующий автоматически добавленный исходный путь: build/sources/annotationProcessor/java/main
. Я не знаю, что это и откуда оно взято, папка пуста, но может ли быть решение с этим? Может быть, если я смогу заставить процессор конфигурации весенней загрузки создать сгенерированный файл в этой папке?
UPD: я использую IntelliJ IDEA 2019.1.3 (Ultimate Edition), Gradle 5.4.1, Spring Boot 2.1.5.