Führen Sie den Spring Boot Configuration Annotation Processor erneut aus, um die generierten Metadaten zu aktualisieren

98

Ich habe hinzugefügt:

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

mein pom.xmlpro intellij‚s Anfrage / Warnung.

Jetzt wird "Spring Boot Configuration Annotation Processor erneut ausführen, um generierte Metadaten zu aktualisieren" angezeigt.

Wie mache ich das, worum intellijich gebeten werde?

Dieser Link, B.2 Generieren eigener Metadaten mit dem Anmerkungsprozessor , enthält keine Anweisungen.

Eric Francis
quelle

Antworten:

60

Das Befolgen dieser Anweisungen hat bei mir funktioniert: http://www.mdoninger.de/2015/05/16/completion-for-custom-properties-in-spring-boot.html

Diese Meldung, dass der Anmerkungsprozessor erneut ausgeführt werden muss, ist etwas verwirrend, da sie anscheinend die ganze Zeit dort bleibt, auch wenn sich nichts geändert hat.

Der Schlüssel scheint darin zu bestehen, das Projekt nach dem Hinzufügen der erforderlichen Abhängigkeit oder nach dem Vornehmen von Eigenschaftsänderungen neu zu erstellen. Nachdem Sie dies getan und zur YAML-Datei zurückgekehrt waren, wurden alle meine Eigenschaften jetzt mit den Konfigurationsklassen verknüpft.

Möglicherweise müssen Sie auch im Maven-Bereich auf die Schaltfläche "Alle Maven-Projekte erneut importieren" klicken, um die .yaml-Dateiansicht aufzurufen und die Links zur entsprechenden Java-Klasse wiederzuerkennen.

Patrick Herrera
quelle
Es gibt also keine Möglichkeit, die Nachricht loszuwerden?
OrangeDog
1
@OrangeDog Nicht das ich finden kann. Ich habe gelernt, es zu ignorieren, aber Sie können jederzeit eine Funktionsanfrage bei JetBrains stellen. Sie könnten sich vorstellen, dass sie diesbezüglich etwas schlauer sein und es nur anzeigen könnten, wenn sie wissen, dass sich die Klassendatei oder die Konfigurationsdatei tatsächlich geändert hat
Patrick Herrera
1
Die Fehlermeldung bleibt nach dem erneuten Erstellen des Projekts bestehen.
Kent Bull
3
"Der Schlüssel scheint der Wiederaufbau des Projekts zu sein", half mir. Die Nachricht ist immer noch hier, aber zumindest die automatische Vervollständigung meiner benutzerdefinierten Eigenschaften in der application.propertiesDatei hat funktioniert.
Ruslan Stelmachenko
1
Ich verwende IDEA 2018.3 und habe nach der SMS einen Link "Benachrichtigung ausblenden". Es sieht so aus, als hätte JetBrains die Informationen geschlossen :-)
Marcus K.
18

Keine der Antworten hat bei mir funktioniert. Wenn Sie die Nachricht nur deaktivieren möchten, gehen Sie zu Intellij-Einstellungen -> Editor -> Allgemein -> Darstellung und deaktivieren Sie "Spring Boot-Metadatenfenster anzeigen".

Sie können jedoch auch mit dieser Nachricht leben, wenn sie Sie nicht zu sehr stört, um sicherzustellen, dass Sie keine anderen Spring Boot-Metadatennachrichten verpassen, an denen Sie interessiert sein könnten.

Lorenzo Polidori
quelle
4
Das Kontrollkästchen ist mit IDEA 2017.2 unter Einstellungen -> Sprachen & Frameworks -> Frühling -> Frühlingsstart
2.
15

Sie können Anmerkungsprozessoren in IntelliJ über Folgendes aktivieren:

  1. Klicken Sie auf Datei
  2. Klicken Sie auf Einstellungen
  3. Suchen Sie in dem kleinen Suchfeld in der oberen linken Ecke nach "Anmerkungsprozessoren".
  4. Aktivieren Sie "Anmerkungsverarbeitung aktivieren".
  5. OK klicken
Brandon S.
quelle
10

Ich hatte das gleiche Problem. Das Problem ist, dass der Spring Boot-Anmerkungsprozessor die spring-configuration-metadata.jsonDatei in Ihrem /target/classes/META-INFOrdner generiert .

Wenn Sie diesen Ordner in IntelliJ wie mich ignoriert haben (denn was zum Teufel, wen interessieren Klassendateien?), Wird die Datei von Ihrer IDE nicht indiziert. Daher keine Fertigstellung und die nervige Nachricht.

Entfernen Sie einfach targetaus der Liste der ignorierten Dateien / Ordner in Settings > Editor > File Types > Ignore files and folders.

Deathtiny
quelle
2
Ich sehe nicht targetin meinen ignorierten Dateien. Es ist in meinem .gitignoreobwohl.
Eric Francis
target/ist in meinem Fall ausgeschlossen und die Dinge funktionieren gut.
Amr Mostafa
3
Es wird verwendet, ob das Ziel ausgeschlossen ist oder nicht (ich bin der Entwickler, der für diese Funktion verantwortlich ist). Bitte reichen Sie einen Fehlerbericht ein, wenn Sie dieses falsche Verhalten reproduzieren können.
Yann Cébron
1
Welche Version von IntelliJ verhält sich also richtig?
Marx
2
@ YannCébron gleich hier, mit gradle. Die Datei wird in ./build/classes/java/main/META-INF/spring-configuration-metadata.json erstellt, aber IntelliJ berücksichtigt dies nicht. Wenn ich die JSON-Datei manuell nach src / main / resources / META-INF verschiebe, funktioniert sie (die Konfigurationen sind nicht mehr vergilbt)
Costi Muraru
8

Keine dieser Optionen hat bei mir funktioniert. Ich habe festgestellt, dass die automatische Erkennung von Anmerkungsprozessoren ziemlich unzuverlässig ist. Am Ende habe ich einen Plugin-Abschnitt in der Datei pom.xml erstellt, in dem die für das Projekt verwendeten Anmerkungsprozessoren explizit festgelegt werden. Dies hat den Vorteil, dass Sie sich nicht auf IDE-Einstellungen verlassen müssen.

<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>
Jason Turan
quelle
6
Dieser hat für mich gearbeitet. Ich habe verwendet, annotationProccessorPathsanstatt einzelne Klassen zu definieren. <annotationProcessorPaths><path><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${parent.version}</version></path>...
Fırat KÜÇÜK
1
  1. Fügen Sie eine Abhängigkeit vom Spring-Boot-Konfigurationsprozessor hinzu
  2. Klicken Sie im Maven-Bereich von IDEA auf "Alle Maven-Projekte erneut importieren"
  3. Projekt neu erstellen
timomeinen
quelle
0

Für mich haben andere Antworten nicht funktioniert. Ich musste öffnen Filesund Invalidate caches and restartauf Intellij machen. Danach hat alles wieder gut funktioniert.

Sep GH
quelle