Повторно запустите обработчик аннотаций конфигурации загрузки Spring, чтобы обновить сгенерированные метаданные


101

Я добавил:

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

мои pom.xmlна intellij«s запрос / предупреждение.

Теперь я вижу «Перезапустите обработчик аннотаций конфигурации загрузки Spring для обновления сгенерированных метаданных».

Как мне сделать то, что intellijменя просят сделать?

Эта ссылка, B.2 Создание ваших собственных метаданных с использованием процессора аннотаций , не содержит инструкций.

Ответы:


62

Следуя этим инструкциям, у меня сработало: http://www.mdoninger.de/2015/05/16/completion-for-custom-properties-in-spring-boot.html

Это сообщение о необходимости перезапуска обработчика аннотаций немного сбивает с толку, поскольку кажется, что оно остается там все время, даже если ничего не изменилось.

Ключ, похоже, перестраивает проект после добавления требуемой зависимости или после внесения каких-либо изменений в свойства. После этого и возврата к файлу YAML все мои свойства теперь были связаны с классами конфигурации.

Вам также может потребоваться нажать кнопку «Повторно импортировать все проекты Maven» на панели Maven, чтобы получить представление файла .yaml для распознавания обратных ссылок на соответствующий класс Java.


Значит, нет возможности избавиться от сообщения?
OrangeDog

1
@OrangeDog Не могу найти. Я научился игнорировать это, но вы всегда можете отправить запрос на добавление функции в JetBrains. Вы можете себе представить, что они могли бы быть немного умнее в этом и отображать его только в том случае, если они знают, что файл класса или файл конфигурации действительно изменились
Патрик Эррера

1
Сообщение об ошибке остается там после перестроения проекта.
Kent Bull

3
«Похоже, ключ к перестройке проекта» помог мне. Сообщение все еще здесь, но, по крайней мере, автозаполнение моих настраиваемых свойств в application.propertiesфайле начало работать.
Руслан Стельмаченко

1
Я использую IDEA 2018.3 и у меня есть ссылка «Скрыть уведомление» после текстового сообщения. Похоже, JetBrains сделала информацию закрытой :-)
Marcus K.

18

Ни один из ответов не помог мне. Если вы просто хотите отключить сообщение, перейдите в Настройки Intellij -> Редактор -> Общие -> Внешний вид, снимите флажок «Показать панель метаданных Spring Boot».

Однако вы также можете жить с этим сообщением, если оно вас не слишком беспокоит, чтобы убедиться, что вы не пропустите никаких других сообщений метаданных Spring Boot, которые могут вас заинтересовать.


4
Флажок установлен в IDEA 2017.2 в разделе «Настройки» -> «Языки и фреймворки» -> «Весна» -> «Spring Boot»
oleh

15

Вы можете включить обработчики аннотаций в IntelliJ, выполнив следующие действия:

  1. Нажмите на файл
  2. Нажмите на Настройки
  3. В маленьком поле поиска в верхнем левом углу найдите «Обработчики аннотаций».
  4. Установите флажок "Включить обработку аннотаций".
  5. Нажмите ОК

11

Я была такая же проблема. Проблема в том, что процессор аннотаций Spring Boot генерирует spring-configuration-metadata.jsonфайл внутри вашей /target/classes/META-INFпапки.

Если вы, как и я, проигнорировали эту папку в IntelliJ (какого черта, кого волнуют файлы классов?), Этот файл не будет проиндексирован вашей IDE. Следовательно, не доработка, а надоедливое сообщение.

Просто удалите targetиз списка игнорируемых файлов / папок, находящихся в Settings > Editor > File Types > Ignore files and folders.


2
Я не вижу targetв проигнорированных файлах. .gitignoreХотя это по-моему .
Эрик Фрэнсис

target/исключен в моем случае, и все работает нормально.
Амр Мостафа

3
Он будет использоваться независимо от того, исключена цель или нет (я разработчик, отвечающий за эту функцию). Пожалуйста, отправьте отчет об ошибке, если вы можете воспроизвести это неправильное поведение.
Ян Себрон

1
так какая версия IntelliJ ведет себя правильно?
Маркс

2
@ YannCébron то же самое, с Gradle. Файл создается в ./build/classes/java/main/META-INF/spring-configuration-metadata.json, но IntelliJ не принимает его во внимание. Если я вручную перенесу файл json в src / main / resources / META-INF, он заработает (конфигурации больше не желтеют)
Costi Muraru

9

Ни один из этих вариантов у меня не работал. Я обнаружил, что автоматическое определение процессоров аннотаций довольно нестабильно. В итоге я создал раздел плагинов в файле pom.xml, который явно устанавливает процессоры аннотаций, которые используются для проекта. Преимущество этого в том, что вам не нужно полагаться на какие-либо настройки IDE.

<plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <compilerVersion>1.8</compilerVersion>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessors>
                    <annotationProcessor>org.springframework.boot.configurationprocessor.ConfigurationMetadataAnnotationProcessor</annotationProcessor>
                    <annotationProcessor>lombok.launch.AnnotationProcessorHider$AnnotationProcessor</annotationProcessor>
                    <annotationProcessor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</annotationProcessor>
                </annotationProcessors>
            </configuration>
        </plugin>

6
Этот сработал для меня. Я использовал annotationProccessorPathsвместо определения отдельных классов. <annotationProcessorPaths><path><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${parent.version}</version></path>...
Fırat KÜÇÜK

1
  1. Включить зависимость от процессора конфигурации-пружины
  2. Нажмите «Повторно импортировать все проекты Maven» на панели Maven в IDEA.
  3. Восстановить проект

0

Для меня другие ответы не работали. Пришлось открыть Filesи сделать Invalidate caches and restartна Intellij. После этого все снова заработало.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.