IntelliJ IDEA не может найти сгенерированный файл метаданных конфигурации - PullRequest
0 голосов
/ 07 июня 2019

В моем проекте я использую 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. Как указывалось, есть два решения:

  1. Сконфигурировать процессор аннотации Spring Boot вручную в IDEA (что недопустимо, потому что это заставит делать это всех, кто работает в моем проекте)
  2. Установите выходной путь 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.

...