Saya memiliki plugin khusus yang menghasilkan sumber di bawah target/generated-sources
(Perhatikan tidak ada nama alat di sini). Jadi saya mendapatkan sumber seperti target/generated-sources/com/mycompany
... dll.
Format ini tidak dapat diubah sama sekali, jadi saya akan dapat mengkonfigurasi Intellij agar menambahkannya sebagai folder sumber. Sampai sekarang, saya dapat melihat bahwa Intellij telah ditambahkan target/generated-sources/com
sebagai folder sumber.
Harap dicatat bahwa saya tidak memiliki opsi untuk mengkonfigurasi plugin!
UPDATE 1 : Saya tidak setuju dengan fakta bahwa saya HARUS meletakkan sumber yang saya buat di bawah folder nama alat. Ini mungkin konvensi yang bagus, tetapi jika saya hanya memiliki satu generator, tidak perlu saya taruh di sana? Sekali lagi, di pom.xml saya, saya memiliki resources
bagian yang dengan jelas menunjukkan bahwa target/generated-sources
harus diperlakukan sebagai folder sumber. Ini berfungsi dengan baik di Eclipse jadi saya tidak tahu mengapa Intellij tidak akan menghormati pengaturan saya.
TL; DR -> Ketika saya meletakkan target/generated-sources
di bagian sumber daya pom.xml
mengapa Intellij terlalu bersemangat untuk menambahkan target/generated-sources/com
ke classpath?
sumber
Jawaban:
Anda bisa mengubah struktur proyek untuk menambahkan folder itu sebagai direktori "sumber".
Project Structure → Modules → Klik
generated-sources
folder dan jadikan sebagaisources
folder.Atau:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>test</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/target/generated-sources</source> </sources> </configuration> </execution> </executions> </plugin>
sumber
mvn idea:idea
memecahkan masalah dalam kasus saya. Untuk catatan.Saya menggunakan solusi Maven (SpringBoot application) adalah:
Kemudian, Intellij secara otomatis mengimpor sumber yang dihasilkan ke proyek.
sumber
Dengan gradle, pengaturan proyek akan dihapus setiap kali Anda menyegarkan pengaturan gradle. Sebagai gantinya Anda perlu menambahkan baris berikut (atau serupa) di build.gradle Anda, saya menggunakan kotlin jadi:
sourceSets { main { java { srcDir "${buildDir.absolutePath}/generated/source/kapt/main" } } }
sumber
gradle idea
. Terima kasih! :)Cara mengatasinya
Pergi ke Struktur Proyek - Modul - Folder Sumber dan temukan
target/generated-sources/antlr4/com/mycompany
- klik Edit properti dan setel Awalan paket kecom.mycompany
.Inilah alasan mengapa kita dapat mengatur awalan Paket pada direktori sumber.
Masalah yang berbeda tetapi terkait di sini
sumber
src/main/antlr4/<path-to-package>/
, maka akan muncul ditarget/generated-sources/antlr4/<path-to-package>
. IntelliJ secara otomatis menandai direktori yang benar sebagai root sumber dan tidak diperlukan prefiks paket. Saya menduga perbaikan ini diperlukan ketika orang-orang menempatkan tata bahasa mereka secara langsungsrc/main/antlr4
, yang sering direkomendasikan karena beberapa alasan.Siapa pun yang menulis plugin itu mengacaukan banyak waktu. Bukan itu cara melakukannya!
Solusi apa pun akan menjadi peretasan besar, buat pengembang plugin menyadari bugnya.
Maaf, hanya itu yang bisa dilakukan.
Oke, ini retasan, langsung setelah eksekusi plugin Anda, gunakan plugin antrun untuk memindahkan direktori ke tempat lain:
<plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>process-sources</phase> <configuration> <target> <move todir="${project.build.directory}/generated-sources/toolname/com" overwrite="true"> <fileset dir="${project.build.directory}/generated-sources/com"/> </move> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
Dalam contoh ini,
toolname
harus diganti dengan apa pun yang secara unik mengidentifikasi plugin yang membuat kode dancom
singkatan dari root dari paket yang dibuat. Jika Anda memiliki beberapa root paket, Anda mungkin memerlukan banyak<move>
tugas.Tetapi jika plugin menambahkan folder sebagai folder sumber, maka Anda gagal.
sumber
target/generated-sources/my-tool
.Mungkin Anda bisa menambahkan langkah ke fase generate-sources yang memindahkan folder?
sumber
Saya mengalami masalah yang sama dengan Eclipse beberapa bulan lalu saat mengimpor proyek saya. Sekarang saya memiliki hal yang sama dengan intelliJ. Inilah cara seseorang membantu saya menyelesaikan ini di IntelliJ:
Menu => View => Tools windows => Maven Project Di spring_user value => Run Configuration, pilih clean install. Ini harus melakukan instalasi bersih dan setelah ini Anda akan dapat melihat kelas
sumber
Memecahkannya dengan menghapus "Dikecualikan" dalam pengaturan modul (klik kanan pada proyek, "Buka pengaturan modul").
sumber
Satu-satunya kondisi kerja, setelah beberapa kali mencoba, adalah menghapus folder .idea yang tersembunyi dari folder root project dan mengimpornya kembali dari Intellij
sumber
Saya ingin memperbarui pada komentar sebelumnya yang dibuat oleh DaShaun , tetapi karena ini adalah pertama kalinya saya berkomentar, aplikasi tidak mengizinkan saya.
Meskipun demikian, saya menggunakan eclipse dan setelah saya menambahkan potongan kode di bawah ini ke pom.xml saya seperti yang disarankan oleh Dashun dan saya menjalankan paket mvn clean untuk menghasilkan file sumber avro, tetapi saya masih mendapatkan kesalahan kompilasi di ruang kerja.
Saya mengklik kanan project_name -> maven -> perbarui proyek dan memperbarui proyek, yang menambahkan target / generated-sources sebagai folder sumber ke proyek eclipse saya.
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>test</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/target/generated-sources</source> </sources> </configuration> </execution> </executions> </plugin>
sumber
saya menjalankan mvn generate-resources dan kemudian menandai folder / target / generated-resources sebagai "sources" (Struktur Proyek -> Pengaturan Proyek -> Modul -> Pilih / target / dihasilkan-sumber daya -> Klik ikon "Sumber" berwarna biru.
sumber