Spring Boot Configuration Annotation Processorを再実行して、生成されたメタデータを更新します


99

私は追加しました:

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

私へのpom.xmlあたりintellijの要求/警告。

「Spring Boot Configuration Annotation Processorを再実行して、生成されたメタデータを更新する」と表示されます。

どうすればintellijいいですか?

このリンク、B.2注釈プロセッサを使用した独自のメタデータの生成には、指示はありません。

回答:


60

これらの指示に従って私のために働いた:http : //www.mdoninger.de/2015/05/16/completion-for-custom-properties-in-spring-boot.html

注釈プロセッサを再実行する必要があるというこのメッセージは、何も変更されていなくても常に表示されているように見えるため、少し混乱します。

重要なのは、必要な依存関係を追加した後、またはプロパティを変更した後にプロジェクトを再構築することです。これを行ってYAMLファイルに戻ると、すべてのプロパティが構成クラスにリンクされています。

対応するJavaクラスへのリンクを認識する.yamlファイルビューを取得するために、Mavenペインの[Reimport All Maven Projects]ボタンをクリックする必要がある場合もあります。


それで、メッセージを取り除く方法はありませんか?
OrangeDog

1
@OrangeDog見つけることができません。私はそれを無視することを学びましたが、JetBrainsでいつでも機能リクエストを提出できます。クラスファイルまたは構成ファイルが実際に変更されたことがわかっている場合にのみ、これについて少し賢く表示することができると想像するでしょう
Patrick Herrera

1
エラーメッセージは、プロジェクトを再構築した後も残っています。
ケントブル

3
「キーはプロジェクトを再構築することであるようです」私を助けました。メッセージはまだここにありますが、少なくともapplication.propertiesファイル内のカスタムプロパティのオートコンプリートが機能し始めました。
Ruslan Stelmachenko 2017年

1
IDEA 2018.3を使用しており、テキストメッセージの後に「通知を非表示」というリンクがあります。JetBrainsが情報をクローズ可能にしたかのように見えます:-)
Marcus K.

18

答えはどれもうまくいきませんでした。メッセージを無効にするだけの場合は、Intellijの[設定]-> [エディタ]-> [全般]-> [外観]に移動し、[Spring Bootメタデータパネルを表示]をオフにします。

ただし、あまり気にしない場合は、そのメッセージを使用して、興味のある他のSpring Bootメタデータメッセージを見逃さないようにすることもできます。


4
チェックボックスは、環境設定の下IDEA 2017.2である- >言語とフレームワーク- >春- >春ブーツ
オレグ

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あります。
Eric Francis

target/私の場合は除外されており、問題はありません。
Amr Mostafa 2016年

3
ターゲットが除外されているかどうかに関係なく使用されます(私はこの機能の開発者です)。この間違った動作を再現できる場合は、バグレポートを提出してください。
YannCébron2016

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ıratKÜÇÜK

1
  1. spring-boot-configuration-processorへの依存関係を含めます
  2. IDEAのMavenペインで[すべてのMavenプロジェクトを再インポート]をクリックします
  3. プロジェクトを再構築

0

私にとって、他の答えはうまくいきませんでした。Intellij を開いFilesて実行する必要Invalidate caches and restartがありました。その後、すべてが再び正常に機能しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.