Jalankan ulang Prosesor Anotasi Konfigurasi Spring Boot untuk memperbarui metadata yang dibuat

101

Aku sudah menambahkan:

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

untuk saya pom.xmlper intellijpermintaan / peringatan 's.

Sekarang saya melihat "Jalankan ulang Prosesor Anotasi Konfigurasi Boot Musim Semi untuk memperbarui metadata yang dihasilkan".

Bagaimana saya melakukan apa intellijyang diminta untuk saya lakukan?

Tautan ini, B.2 Membuat meta-data Anda sendiri menggunakan pemroses anotasi , tidak memiliki instruksi.

Eric Francis
sumber

Jawaban:

62

Mengikuti petunjuk ini berhasil untuk saya: http://www.mdoninger.de/2015/05/16/completion-for-custom-properties-in-spring-boot.html

Pesan tentang harus menjalankan Ulang Prosesor Anotasi agak membingungkan karena tampaknya tetap ada di sana sepanjang waktu meskipun tidak ada yang berubah.

Kuncinya tampaknya membangun kembali proyek setelah menambahkan ketergantungan yang diperlukan, atau setelah membuat perubahan properti apa pun. Setelah melakukan itu dan kembali ke file YAML, semua properti saya sekarang ditautkan ke kelas konfigurasi.

Anda mungkin perlu mengeklik tombol 'Impor Ulang Semua Proyek Maven' di panel Maven juga untuk mendapatkan tampilan file .yaml untuk mengenali tautan kembali ke kelas Java yang sesuai.

Patrick Herrera
sumber
Jadi tidak ada cara untuk menghilangkan pesan tersebut?
OrangeDog
1
@OrangeDog Bukan yang bisa saya temukan. Saya telah belajar untuk mengabaikannya tetapi Anda selalu dapat mengajukan permintaan fitur dengan JetBrains. Anda akan membayangkan bahwa mereka bisa menjadi sedikit lebih pintar tentang hal ini dan hanya menampilkannya jika mereka tahu file kelas atau file konfigurasi telah benar-benar berubah
Patrick Herrera
1
Pesan kesalahan masih tetap ada setelah membangun kembali proyek.
Kent Bull
3
"Kuncinya tampaknya membangun kembali proyek" membantu saya. Pesannya masih ada di sini, tapi setidaknya penyelesaian otomatis properti kustom saya dalam application.propertiesfile mulai berfungsi.
Ruslan Stelmachenko
1
Saya menggunakan IDEA 2018.3 dan memiliki tautan "Sembunyikan pemberitahuan" setelah pesan teks. Tampaknya JetBrains membuat info tersebut dapat ditutup :-)
Marcus K.
18

Tidak ada jawaban yang berhasil untuk saya. Jika Anda hanya ingin menonaktifkan pesan, buka Preferensi Intellij -> Editor -> Umum -> Penampilan, hapus centang "Tampilkan panel metadata Boot Musim Semi".

Namun, Anda juga dapat menerima pesan itu, jika tidak terlalu mengganggu Anda, jadi pastikan Anda tidak melewatkan pesan metadata Spring Boot lainnya yang mungkin Anda minati.

Lorenzo Polidori
sumber
4
Kotak centang adalah dengan IDEA 2017.2 di bawah Preferensi -> Bahasa & Kerangka -> Musim Semi -> Spring Boot
oleh
15

Anda dapat mengaktifkan pemroses anotasi di IntelliJ melalui yang berikut ini:

  1. Klik File
  2. Klik Pengaturan
  3. Di kotak telusur kecil di pojok kiri atas, telusuri "Annotation Processors"
  4. Centang "Aktifkan pemrosesan anotasi"
  5. Klik OK
Brandon S.
sumber
11

Saya memiliki masalah yang sama. Masalahnya adalah prosesor anotasi Spring Boot menghasilkan spring-configuration-metadata.jsonfile di dalam /target/classes/META-INFfolder Anda .

Jika Anda mengabaikan folder ini di IntelliJ seperti saya (karena apa sih, siapa yang peduli dengan file kelas?), File tersebut tidak akan diindeks oleh IDE Anda. Oleh karena itu, tidak ada penyelesaian, dan pesan yang mengganggu.

Hapus saja targetdari daftar abaikan file / folder, yang terletak di Settings > Editor > File Types > Ignore files and folders.

Kematian
sumber
2
Saya tidak melihat targetdi file saya yang diabaikan. Itu ada di pikiranku .gitignore.
Eric Francis
target/dikecualikan dalam kasus saya dan semuanya berfungsi dengan baik.
Amr Mostafa
3
Ini akan digunakan baik target dikecualikan atau tidak (saya adalah pengembang yang bertanggung jawab untuk fitur ini). Silakan mengajukan laporan bug jika Anda dapat mereproduksi perilaku yang salah ini.
Yann Cébron
1
jadi versi IntelliJ mana yang berperilaku baik?
Marx
2
@ YannCébron sama di sini, dengan gradle. File dibuat di ./build/classes/java/main/META-INF/spring-configuration-metadata.json, tetapi IntelliJ tidak memperhitungkannya. Jika saya memindahkan file json secara manual ke src / main / resources / META-INF, ini berfungsi (konfigurasi tidak lagi menguning)
Costi Muraru
9

Tak satu pun dari opsi ini berhasil untuk saya. Saya telah menemukan bahwa deteksi otomatis prosesor anotasi menjadi sangat tidak stabil. Saya akhirnya membuat bagian plugin di file pom.xml yang secara eksplisit mengatur pemroses anotasi yang digunakan untuk proyek tersebut. Keuntungannya adalah Anda tidak perlu bergantung pada pengaturan IDE apa pun.

<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
sumber
6
Yang ini berhasil untuk saya. Saya menggunakan annotationProccessorPathsalih-alih mendefinisikan kelas individu. <annotationProcessorPaths><path><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${parent.version}</version></path>...
Fırat KÜÇÜK
1
  1. Sertakan ketergantungan pada spring-boot-configuration-processor
  2. Klik "Impor Ulang Semua Proyek Maven" di panel Maven dari IDEA
  3. Buat ulang proyek
timomeinen
sumber
0

Bagi saya, jawaban lain tidak berhasil. Saya harus pergi untuk membuka Filesdan melakukannya Invalidate caches and restartdi Intellij. Setelah itu, semuanya bekerja dengan baik lagi.

Sep GH
sumber