web.xml hilang dan <failOnMissingWebXml> disetel ke true

142

Mempertimbangkan:

Masukkan deskripsi gambar di sini

Ketika saya membuat proyek Maven sederhana di Eclipse saya mendapatkan kesalahan ini:

web.xml hilang dan <failOnMissingWebXml>disetel ke true

Bagaimana saya bisa memperbaiki masalah ini?

Yogesh Doke
sumber
5
Anda perlu menambahkan maven-war-plugin. Ini adalah plugin implisit di mana nilai default untuk properti konfigurasi itu benar. Anda perlu mendeklarasikannya secara eksplisit dan mengatur properti konfigurasi ke false. Lihat lebih lanjut di sini . Atau Anda dapat menambahkan web.xml kosong
Paul Samsotha

Jawaban:

181

Anda dapat melakukannya juga seperti ini:

  1. Klik kanan pada Deployment Descriptor di Project Explorer .
  2. Pilih Hasilkan Stub Penjelasan Penerapan .

Ini akan menghasilkan folder WEB-INF di src / main / webapp dan web.xml di dalamnya.

masukkan deskripsi gambar di sini

Wojciechu
sumber
39
Saya tidak akan merekomendasikan menambahkan boilerplate ke kode, hanya karena alat build Anda memberikan kesalahan.
Martijn Burger
1
@ MartijnBurger Bisakah Anda memberi tahu kami tentang kemungkinan akibat dari peretasan di atas dan jika mungkin juga menambahkan beberapa alternatif lain? - Akan membantu programmer pemula seperti saya. Terima kasih.
Sendhilkumar Alalasundaram
7
Lihat jawaban saya di bawah untuk alternatif. Solusi di atas tidak salah, hanya saja Anda harus selalu berusaha untuk membuat produk akhir Anda sebersih mungkin. Dengan solusi di atas, produk akhir Anda akan berakhir dengan web.xml file yang tidak perlu . Anda harus memperbaiki masalah ini di alat Anda membangun (yaitu pakar) sebagai gantinya.
Martijn Burger
Anda juga dapat merujuk: eggsylife.co.uk/2009/12/20/...
Satyendra
ini akan menambah file yang tidak perlu dalam proyek Anda dan hal lain adalah bahwa web.xml approcah sudah tua. jika Anda ingin menghapus kesalahan ini maka paksakan pembaruan kesalahan maven akan hilang
jitendra varshney
393

Ini adalah kesalahan pakar. Ia mengatakan bahwa ia mengharapkan file web.xml di proyek Anda karena itu adalah aplikasi web, seperti yang ditunjukkan oleh <packaging>war</packaging>. Namun, untuk aplikasi web terbaru, file web.xml sepenuhnya opsional. Maven perlu mengejar kebaktian ini. Tambahkan ini ke pakar pom.xmluntuk membuat pakar mengejar dan Anda tidak perlu menambahkan yang tidak berguna web.xmlke proyek Anda:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

Ini adalah solusi yang lebih baik daripada menambahkan yang kosong web.xmlkarena dengan cara ini produk akhir Anda tetap bersih, Anda hanya mengubah parameter build Anda.

Untuk versi pakar terkini, Anda juga bisa menggunakan versi yang lebih pendek:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Martijn Burger
sumber
28
Jawaban ini lebih logis daripada yang lain.
smwikipedia
7
Jika Anda menggunakan lingkungan dalam Servlet 3.0+ dan memiliki implementasi Interface WebApplicationInitializerjawaban ini adalah pendekatan yang benar. Ini adalah cara yang masuk akal untuk menyelesaikan masalah ini - tidak ada gunanya menambahkan web.xmlsetelah mengambil langkah-langkah untuk hidup tanpanya!
Geeb
4
Ini adalah jawaban yang lebih baik daripada membuat web.xml kosong
dtortola
1
Bekerja bahkan tanpa Maven> Perbarui Proyek. Jadi itu tidak diperlukan.
Lucky
13
Silakan pertimbangkan untuk memperbarui jawaban Anda untuk konfigurasi yang lebih pendek, seperti yang disarankan di bawah ini . Termasuk <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>mencukupi daripada pengaturan konfigurasi plugin yang lebih verbose.
Olivier Cailloux
32

Jika Anda sudah memiliki web.xml di bawah / src / main / webapp / WEB-INF tetapi Anda masih mendapatkan kesalahan "web.xml hilang dan disetel ke true", Anda dapat memeriksa apakah Anda telah menyertakan / src / main / webapp di sumber proyek Anda.

Berikut langkah-langkah yang bisa Anda ikuti:

  1. Anda dapat memeriksa ini dengan mengklik kanan proyek Anda, dan membuka dialog Properties-nya, dan kemudian "Majelis Penempatan", di mana Anda dapat menambahkan Folder / src / main / webapp. Simpan pengaturan, lalu,
  2. Pergi ke Eclipse menu Project -> Clean ... dan clean the project, dan kesalahannya akan hilang.

(Saya memverifikasi ini dengan Eclipse Mars)

Yuci
sumber
Mengalami masalah yang sama di bawah "Eclipse Mars" dan solusi yang dijelaskan Anda berfungsi dengan sempurna! Terima kasih
Hartmut P.
tidak berfungsi untuk saya ... Saya sudah memiliki folder itu dan saya bahkan mencoba mengatur web.xml hilang palsu. Ini tidak berfungsi ....
Baradwaj Aryasomayajula
19

Jika Anda menggunakan Spring Tool Suite, opsi untuk Menghasilkan Stub Descriptor Descriptor dipindahkan di bawah Java EE Tools, sehingga Anda:

  1. Klik kanan pada proyek Anda
  2. Pilih Java EE Tools
  3. Pilih opsi Generate Deployment Descriptor Descriptor

Ini akan membuat file web.xml di dalam folder src / main / webapp / WEB-INF /, dan tentu saja menghapus kesalahan dari file pom.xml Maven.

masukkan deskripsi gambar di sini

milan.latinovic
sumber
16

Saya memiliki masalah yang sama. Setelah belajar dan googling, saya telah menyelesaikan masalah saya:

Klik kanan pada folder proyek, pergi ke Java EE Tools, pilih Generate Deployment Descriptor Stub. Ini akan dibuat web.xmldi folder src/main/webapp/WEB-INF.

Tung
sumber
3
Saya tidak akan merekomendasikan menambahkan boilerplate ke kode, hanya karena alat build Anda memberikan kesalahan.
Martijn Burger
16

Anda juga dapat melakukan ini yang kurang verbose

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
liam mooney
sumber
IMHO solusi yang paling elegan. Lihat doc (dan bug gerhana lama yang mencegah solusi ini berfungsi, sekarang terpecahkan).
Olivier Cailloux
9

Eclipse mengenali webappdirektori default yang salah . Karena itu kita harus mengaturnya dengan jelas maven-war-plugin.

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.0.0</version>
      <configuration>
        <webappDirectory>src/main/webapp</webappDirectory>
      </configuration>
    </plugin>
  </plugins>
</build>

Setelah menyimpan pengaturan ini, kesalahan tidak akan pernah terjadi jika dihapus. (Saya tidak bisa menjelaskan alasannya.)

出 羽 和 之
sumber
3

Saya memiliki masalah yang sama, meskipun saya memiliki 'src/main/webapp/WEB-INF/'folder dengan benar web.xml.

Masalahnya hilang setelah saya membuat ulang konfigurasi (maven-> eclipse) dengan Maven build..saya dieksekusimvn eclipse:clean eclipse:eclipse

Dan kemudian saya biasa Maven -> Update Projectmenambahkan opsi spesifik plugin (eclipse-> maven).

Boris Treukhov
sumber
Sama di sini, meskipun saya menggunakan git reset
Markus Barthlen
Terima kasih, ini juga membantu saya. Klik kanan -> Maven -> Perbarui Proyek
trebor
2

Saya mengalami masalah ini hanya di gerhana, semuanya bekerja dengan baik di baris perintah Maven, dan file web.xml saya ada. Itu adalah proyek yang matang (sudah dikerahkan dalam produksi) yang terkena dampak. Masalah saya terkait dengan metadata gerhana. Ada masalah dengan salah satu file di folder .s / saya, khususnya org.eclipse.wst.common.component telah diubah. Saya dapat mengembalikan file ini ke versi sebelumnya, yang menyelesaikan masalah dalam kasus saya.

Perhatikan bahwa jawaban Yuci tidak berfungsi untuk saya, ketika saya mencoba mengklik Majelis Penempatan di properti gerhana, saya mendapat kesalahan yang mengatakan "halaman yang saat ini ditampilkan berisi nilai yang tidak valid."

The Gilbert Arenas Dagger
sumber
Saya memiliki situasi yang sama dan harus mengembalikan file org.eclipse.wst.common.component dari .settings / folder dan proyek saya berfungsi sekarang, tampaknya konten komponen telah dihapus, sehingga tidak memiliki jalur ke web saya. file xml. Juga ketika saya mencoba membuka Majelis Penyebaran di properti gerhana mendapat kesalahan yang sama: "halaman yang ditampilkan saat ini mengandung nilai yang tidak valid." Saya menemukan jawaban ini agak terlambat tetapi ini adalah bagaimana saya menyelesaikannya. Jawaban bagus btw.
Jorge Valdés
2

Untuk Project with web.xml, present Project -> Properties -> Deployment Assembly, tempat Anda dapat menambahkan Folder src / main / webapp. Simpan perubahan. Bersihkan proyek untuk memulai.

Untuk Proyek dengan web.xml tidak ada, Setel failOnMissingWebXml menjadi false di pom.xml di bawah tag properti.

Saurav
sumber
1

Melakukan hal ini:

Pergi dan klik kanan pada Deployment Descriptor dan klik Generate Deployment Descriptor Desubtor.

Nuno Marques
sumber
0

Tidak masuk akal untuk membuat web.xml hanya elcipse menginginkannya, bahkan tidak perlu. Ini adalah kasus jika Anda memiliki servlet conatiner yang tertanam atau hidup tanpa xml cfg seperti spring-boot. Anda baru saja mengaktifkan JavaEE (hal-hal yang tidak berguna) dalam gerhana di tingkat proyek atau global

Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
pasukan
sumber
0

Pilih proyek Anda dan pilih opsi "Deployment Descriptor" lalu pilih "Generate Deployment Descriptor Desubtor"

Christina Vimala
sumber
0

Langkah: Pilih proyek Anda dan pilih opsi "Deployment Descriptor" dan kemudian pilih "Generate Deployment Descriptor Descriptor" bekerja dengan baik. Masalahnya adalah tidak selalu kita membutuhkan web.xml, jadi yang terbaik adalah menambahkan false ke pom.xml

Lotchi Dagbo
sumber
0

Klik kanan pada project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

lalu tekan Next maka akan membuat WEB-INFfolder dengan web.xmlfile di dalamnya.

2

Itu sudah selesai.

Vraj Patel
sumber
-1

Buat folder WEB-INF di src / webapp, dan sertakan halaman web.xml di dalam folder WEB-INF kemudian

basavaraj Marapur
sumber
-1

Hapus file dari -web / .setting & -admin / .setting

1

Jun gao
sumber
-1

Klik kanan pada proyek, pergi ke Maven -> Perbarui Proyek ... , lalu periksa Angkatan Pembaruan Snapshots / Rilis , lalu klik Ok . Selesai!

João V.
sumber