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


99

Я додав:

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

мої pom.xmlна intellij«s запит / попередження.

Тепер я бачу "Повторно запустити процесор анотацій конфігурації Spring Boot для оновлення створених метаданих".

Як зробити те, що intellijпросить мене зробити?

Це посилання, B.2 Створення власних метаданих за допомогою процесора анотацій , не містить інструкцій.

Відповіді:


60

Дотримуючись цих інструкцій, мені вдалося: http://www.mdoninger.de/2015/05/16/completion-for-custom-properties-in-spring-boot.html

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

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

Можливо, вам доведеться натиснути кнопку "Повторно імпортувати всі проекти Maven" на панелі Maven, щоб отримати подання файлу .yaml для розпізнавання посилань на відповідний клас Java.


Тож немає можливості позбутися повідомлення?
OrangeDog

1
@OrangeDog Не те, що я можу знайти. Я навчився це ігнорувати, але ви завжди можете подати запит на функцію до JetBrains. Ви могли б уявити, що вони можуть бути трохи розумнішими щодо цього і відображати це лише тоді, коли знають, що файл класу або файл конфігурації насправді змінився
Patrick Herrera

1
Повідомлення про помилку все ще залишається там після відновлення проекту.
Кент Булл,

3
"Здається, ключовим є відновлення проекту" мені допомогло. Повідомлення все ще тут, але принаймні автоматично заповнення моїх власних властивостей у application.propertiesфайлі почало працювати.
Руслан Стельмаченко

1
Я використовую IDEA 2018.3 і після текстового повідомлення маю посилання "Сховати сповіщення". Схоже, JetBrains зробив інформацію закритою :-)
Маркус К.

18

Жодна з відповідей у ​​мене не спрацювала. Якщо ви просто хочете вимкнути повідомлення, перейдіть до Налаштування Intellij -> Редактор -> Загальне -> Зовнішній вигляд, зніміть прапорець «Показати панель метаданих Spring Boot».

Однак ви також можете жити з цим повідомленням, якщо воно вас не надто турбує, тому, щоб переконатися, що ви не пропустите жодного повідомлення метаданих Spring Boot, яке може вас зацікавити.


4
Поставте прапорець біля IDEA 2017.2 у розділі Налаштування -> Мови та рамки -> Весна -> Весняне завантаження
oleh

15

Ви можете ввімкнути процесори анотацій у IntelliJ за допомогою:

  1. Клацніть на Файл
  2. Клацніть на Налаштування
  3. У маленькому вікні пошуку у верхньому лівому куті знайдіть "Процесори анотацій"
  4. Поставте прапорець "Увімкнути обробку анотацій"
  5. Клацніть OK

10

У мене було те саме питання. Проблема полягає в тому, що процесор анотацій 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, він працює (конфігурації більше не
жовтіють

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. Включити залежність від spring-boot-configuration-processor
  2. Натисніть "Повторно імпортувати всі проекти Maven" на панелі Maven IDEA
  3. Проект відновлення

0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.