Eclipse-Fehler: web.xml fehlt und failOnMissingWebXml wird auf true gesetzt

1. Einleitung

In diesem Tutorial werden wir den häufigen Eclipse-Fehler „ web.xml fehlt undist auf true gesetzt “, die wir beim Erstellen einer Webanwendung erhalten.

2. Eclipse-Fehler

In Java-Webanwendungen ist web.xml der Standardname des Bereitstellungsdeskriptors.

Wir können eine Webanwendung mit Maven oder ein dynamisches Webprojekt mit Eclipse erstellen. Eclipse erstellt nicht den Standardbereitstellungsdeskriptor web.xml im Verzeichnis WEB-INF / .

Java EE 6+ -Spezifikationen haben versucht, Deployment-Deskriptoren zu deaktivieren, da sie durch Anmerkungen ersetzt werden können . Die niedrigeren Versionen erfordern es jedoch weiterhin.

Die Eigenschaft failOnMissingWebXml ist eine der Eigenschaften des Apache Maven-Kriegs-Plugins org.apache.maven.plugins: maven-war-plugin. Der Standardwert dieses Plugins ist true für Version <3.1.0 und false für spätere Versionen.

Dies bedeutet, dass das Ziel, sie als War-Datei zu verpacken, fehlschlägt , wenn wir das Maven-War-Plugin vor Version 3.1.0 verwenden und die Datei web.xml nicht vorhanden ist.

3. Verwenden von web.xml

In allen Fällen, in denen der Deployment-Deskriptor web.xml noch benötigt wird , können wir web.xml problemlos in Eclipse generieren :

  • Klicken Sie mit der rechten Maustaste auf das Webprojekt
  • Bewegen Sie den Mauszeiger zu Java EE Tools im Menü
  • Wählen Sie im Untermenü die Option Deployment Descriptor Stub generieren aus

Voila! Die Datei web.xml wird im Verzeichnis WEB-INF / generiert .

4. Ohne web.xml

In den meisten Fällen benötigen wir die Datei web.xml möglicherweise überhaupt nicht . Anstatt eine leere web.xml- Datei in unserem Projekt zu behalten , können wir die Erstellung einfach überspringen. Glücklicherweise gibt es zwei einfache Ansätze, je nachdem, welche Version des Maven-War-Plugins wir verwenden.

4.1. Verwenden des Maven-War-Plugins Vor 3.1.0

Wir können alle Plugins eines Maven-Projekts im konfigurieren Abschnitt unserer pom.xml . Wie wir bereits gesagt haben, ist der Standardwert für failOnMissingWebXml ist wahr , bevor Version 3.1.0 des Plug - ins.

Deklarieren wir das maven-war-Plugin in unserer pom.xml und setzen die Eigenschaft failOnMissingWebXml explizit auf false :

 maven-war-plugin 2.4  false  

4.2. Verwenden des Maven-War-Plugins 3.1.0 und höher

Wir können auch vermeiden, die Eigenschaft explizit festzulegen , indem wir die Version des Maven-War-Plugins aktualisieren . Der Standardwert der Eigenschaft failOnMissingWebXml ist für Maven-War-Plugin Version 3.1.0 und höher falsch :

 maven-war-plugin 3.1.0 

5. Schlussfolgerung

In diesem Artikel haben wir den Grund für den fehlenden web.xml- Fehler und mehrere Lösungsansätze gesehen.

Unser Beispiel finden Sie wie immer auf GitHub.