Kesalahan Eclipse: web.xml hilang dan failOnMissingWebXml disetel ke true

1. Pengenalan

Dalam tutorial ini, kita akan membincangkan kesalahan Eclipse yang biasa, “ web.xml hilang dandisetel ke true “, yang kami dapat semasa membuat aplikasi web.

2. Kesalahan Gerhana

Dalam aplikasi web Java, web.xml adalah nama standard deskriptor penyebaran.

Kita boleh membuat aplikasi web menggunakan Maven atau projek web dinamik menggunakan Eclipse. Eclipse tidak membuat web.xml deskriptor penyebaran lalai di bawah direktori WEB-INF / .

Spesifikasi Java EE 6+ telah berusaha untuk tidak menekankan penerangan penerapan, kerana dapat digantikan dengan anotasi . Walau bagaimanapun, versi yang lebih rendah tetap memerlukannya.

Harta failOnMissingWebXml adalah salah satu sifat plugin perang Apache Maven, org.apache.maven.plugins: maven-war-plugin. Nilai lalai dari plugin ini adalah benar untuk versi <3.1.0 dan salah untuk versi yang lebih baru.

Ini bermaksud jika kita menggunakan maven-war-plugin lebih awal daripada versi 3.1.0, dan fail web.xml tidak ada, maka tujuan untuk mengemasnya sebagai fail perang akan gagal.

3. Menggunakan web.xml

Untuk semua kes di mana kita masih memerlukan penerangan penyebaran web.xml , kita dapat menghasilkan web.xml dengan mudah di Eclipse :

  • Klik kanan pada projek web
  • Arahkan ke Alat EE Java pada menu
  • Pilih Generate Deployment Descriptor Stub dari sub-menu

Voila! yang web.xml fail dihasilkan di bawah WEB-INF / direktori.

4. Tanpa web.xml

Dalam kebanyakan kes, kami mungkin tidak memerlukan fail web.xml sama sekali. Daripada menyimpan fail web.xml kosong dalam projek kami, kami hanya boleh membuatnya sama sekali. Nasib baik, ada dua pendekatan mudah, bergantung pada versi plugin perang-perang yang kita gunakan.

4.1. Menggunakan maven-war-plugin Sebelum 3.1.0

Kita dapat mengkonfigurasi semua plugin projek Maven di bahagian pom.xml kami . Seperti yang telah kami katakan sebelumnya, nilai lalai untuk failOnMissingWebXml adalah benar sebelum versi 3.1.0 pemalam.

Mari nyatakan plugin perang-maven di pom.xml kami dan tetapkan harta itu secara gagalOnMissingWebXml kepada false :

 maven-war-plugin 2.4  false  

4.2. Menggunakan maven-war-plugin 3.1.0 dan Kemudian

Kami juga dapat mengelakkan mengatur harta benda secara eksplisit dengan menaikkan versi maven-war-plugin . Nilai lalai harta failOnMissingWebXml adalah salah untuk versi maven-war-plugin 3.1.0 dan yang lebih baru:

 maven-war-plugin 3.1.0 

5. Kesimpulan

Dalam artikel ini, kami melihat sebab di sebalik ralat web.xml yang hilang dan pelbagai pendekatan untuk memperbaikinya.

Seperti biasa, contoh kami boleh didapati di GitHub.