web.xml fehlt und <failOnMissingWebXml> wird auf true gesetzt

142

Erwägen:

Geben Sie hier die Bildbeschreibung ein

Wenn ich ein einfaches Maven- Projekt in Eclipse erstelle , wird folgende Fehlermeldung angezeigt:

web.xml fehlt und <failOnMissingWebXml>ist auf true gesetzt

Wie kann ich dieses Problem beheben?

Yogesh Doke
quelle
5
Sie müssen das hinzufügen maven-war-plugin. Dies ist ein implizites Plugin, bei dem der Standardwert für diese Konfigurationseigenschaft true ist. Sie müssen es explizit deklarieren und die Konfigurationseigenschaft auf false setzen. Sehen Sie hier mehr . Oder Sie können eine leere web.xml hinzufügen
Paul Samsotha

Antworten:

180

Sie können es auch so machen:

  1. Klicken Sie im Projektexplorer mit der rechten Maustaste auf Deployment Descriptor .
  2. Wählen Sie Generate Deployment Descriptor Stub aus .

Es wird ein WEB-INF- Ordner in src / main / webapp und eine web.xml darin generiert .

Geben Sie hier die Bildbeschreibung ein

Wojciechu
quelle
39
Ich würde nicht empfehlen, dem Code Boilerplate hinzuzufügen, nur weil Ihr Build-Tool einen Fehler ausgibt.
Martijn Burger
1
@MartijnBurger Können Sie uns die möglichen Auswirkungen des oben genannten Hacks erläutern und wenn möglich auch einige andere Alternativen hinzufügen? - würde unerfahrenen Programmierern wie mir helfen. Vielen Dank.
Sendhilkumar Alalasundaram
7
Siehe meine Antwort unten für eine Alternative. Die obige Lösung ist nicht falsch, es ist nur so, dass Sie immer danach streben sollten, Ihr Endprodukt so sauber wie möglich zu machen. Mit der oben genannten Lösung erhält Ihr Endprodukt eine unnötige web.xml Datei. Sie sollten dieses Problem stattdessen in Ihrem Build-Tool (dh Maven) beheben.
Martijn Burger
Sie können auch verweisen : ggsylife.co.uk/2009/12/20/…
Satyendra
Dadurch wird eine unnötige Datei in Ihr Projekt eingefügt. Außerdem ist die Datei "web.xml" alt. Wenn Sie diesen Fehler entfernen möchten, erzwingen Sie einfach die Aktualisierung. Der Maven-Fehler ist verschwunden
jitendra varshney
393

Dies ist ein Maven-Fehler. Es heißt, dass es eine web.xml-Datei in Ihrem Projekt erwartet, da es sich um eine Webanwendung handelt, wie durch angegeben <packaging>war</packaging>. Für neuere Webanwendungen ist eine web.xml-Datei jedoch völlig optional. Maven muss diese Konvention einholen. Fügen Sie dies Ihrem Maven hinzu pom.xml, damit Maven aufholen kann, und Sie müssen web.xmlIhrem Projekt kein Nutzloses hinzufügen :

<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>

Dies ist eine bessere Lösung als das Hinzufügen eines leeren web.xml Produkts, da Ihr Endprodukt auf diese Weise sauber bleibt und Sie lediglich Ihre Build-Parameter ändern.

Für aktuellere Versionen von maven können Sie auch die kürzere Version verwenden:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Martijn Burger
quelle
28
Diese Antwort ist logischer als andere.
smwikipedia
7
Wenn Sie eine Umgebung in Servlet 3.0+ verwenden und eine Implementierung Interface WebApplicationInitializerhaben, ist diese Antwort der richtige Ansatz. Es ist der vernünftige Weg, um dieses Problem zu lösen - es macht keinen Sinn, das hinzuzufügen, web.xmlnachdem man Schritte unternommen hat, um ohne es zu leben!
Geeb
4
Dies ist eine bessere Antwort als das Erstellen einer leeren web.xml
dtortola
1
Funktioniert auch ohne Maven> Projekt aktualisieren. Es wird also nicht benötigt.
Glücklicher
13
Bitte aktualisieren Sie Ihre Antwort für eine kürzere Konfiguration, wie unten vorgeschlagen . Das Einschließen <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>reicht anstelle der ausführlicheren Plugin-Konfigurationseinstellungen aus.
Olivier Cailloux
32

Wenn Sie bereits web.xml unter / src / main / webapp / WEB-INF haben, aber immer noch die Fehlermeldung "web.xml fehlt und ist auf true gesetzt" erhalten, können Sie überprüfen, ob Sie / src / main / webapp enthalten haben in Ihre Projektquelle.

Hier sind die Schritte, die Sie ausführen können:

  1. Sie können dies überprüfen, indem Sie mit der rechten Maustaste auf Ihr Projekt klicken und dessen Dialogfeld "Eigenschaften" und dann "Bereitstellungsassembly" öffnen, in dem Sie Ordner / src / main / webapp hinzufügen können. Speichern Sie die Einstellung und dann
  2. Gehen Sie zum Eclipse-Menü Projekt -> Bereinigen ... und bereinigen Sie das Projekt. Der Fehler sollte behoben sein.

(Ich habe dies mit Eclipse Mars überprüft)

Yuci
quelle
Erlebte das gleiche Problem unter "Eclipse Mars" und Ihre beschriebene Lösung funktioniert perfekt! Danke
Hartmut P.
hat bei mir nicht funktioniert ... Ich habe bereits diese Ordner und ich habe sogar versucht, web.xml als falsch zu setzen. Es funktioniert nicht ....
Baradwaj Aryasomayajula
19

Wenn Sie Spring Tool Suite verwenden, wird die Option zum Generieren von Deployment Descriptor Stub unter Java EE Tools verschoben, sodass Sie:

  1. Klicken Sie mit der rechten Maustaste auf Ihr Projekt
  2. Wählen Sie Java EE Tools
  3. Wählen Sie die Option Deployment Descriptor Stub generieren aus

Dadurch wird die Datei web.xml im Ordner src / main / webapp / WEB-INF / erstellt und natürlich der Fehler aus der Datei pom.xml von Maven entfernt.

Geben Sie hier die Bildbeschreibung ein

milan.latinovic
quelle
16

Ich habe das gleiche Problem. Nach dem Lernen und Googeln habe ich mein Problem gelöst:

Klicken Sie mit der rechten Maustaste auf den Projektordner, gehen Sie zu Java EE Toolsund wählen Sie Generate Deployment Descriptor Stub. Dies wird web.xmlim Ordner erstellt src/main/webapp/WEB-INF.

Tung
quelle
3
Ich würde nicht empfehlen, dem Code Boilerplate hinzuzufügen, nur weil Ihr Build-Tool einen Fehler ausgibt.
Martijn Burger
16

Sie können dies auch tun, was weniger ausführlich ist

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Liam Mooney
quelle
Die eleganteste Lösung meiner Meinung nach. Siehe doc (und ein alter Eclipse- Fehler, der das Funktionieren dieser Lösung verhinderte, jetzt behoben).
Olivier Cailloux
9

Eclipse erkennt ein falsches Standardverzeichnis webapp. Deshalb sollten wir es klar durch setzen 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>

Nach dem Speichern dieser Einstellung tritt der Fehler nie mehr auf, wenn er entfernt wird. (Ich kann nicht erklären warum.)

出 羽 和 之
quelle
3

Ich hatte das gleiche Problem, obwohl ich 'src/main/webapp/WEB-INF/'Ordner mit korrekt hatte web.xml.

Das Problem verschwand, nachdem ich die Konfiguration (maven-> eclipse) mit der Maven build..Ausführung neu erstellt hattemvn eclipse:clean eclipse:eclipse

Und dann habe ich Maven -> Update ProjectPlugin-spezifische Optionen hinzugefügt (Eclipse-> Maven).

Boris Treukhov
quelle
Das gleiche hier, obwohl ich Git Reset verwendet habe
Markus Barthlen
Danke, das hat mir auch geholfen. Rechtsklick -> Maven -> Projekt
aktualisieren
2

Ich habe dieses Problem nur in Eclipse festgestellt, in der Maven-Befehlszeile hat alles einwandfrei funktioniert, und meine Datei web.xml war vorhanden. Es war ein ausgereiftes Projekt (bereits in der Produktion eingesetzt), das betroffen war. Mein Problem war an die Eclipse-Metadaten gebunden. Es gab ein Problem mit einer der Dateien in meinem Ordner .settings /, insbesondere wurde org.eclipse.wst.common.component geändert. Ich konnte diese Datei auf die vorherige Version zurücksetzen, wodurch das Problem in meinem Fall behoben wurde.

Beachten Sie, dass Yucis Antwort bei mir nicht funktioniert hat. Als ich versuchte, in den Eclipse-Eigenschaften auf Deployment Assembly zu klicken, wurde die Fehlermeldung "Die aktuell angezeigte Seite enthält ungültige Werte" angezeigt.

Der Gilbert Arenas Dolch
quelle
Ich hatte die gleiche Situation und musste die Datei org.eclipse.wst.common.component aus meinem Ordner .settings / wiederherstellen. Mein Projekt funktioniert jetzt. Anscheinend wurde der Inhalt der Komponente gelöscht, sodass der Pfad zu meinem Web nicht vorhanden ist. XML-Datei. Auch beim Versuch, Deployment Assembly in den Eclipse-Eigenschaften zu öffnen, wurde der gleiche Fehler angezeigt: "Die aktuell angezeigte Seite enthält ungültige Werte." Ich habe diese Antwort etwas spät gefunden, aber so löse ich sie. Tolle Antwort übrigens.
Jorge Valdés
2

Für Projekt mit web.xml vorhanden Projekt -> Eigenschaften -> Bereitstellungsassembly, wo Sie den Ordner src / main / webapp hinzufügen können. Änderungen speichern. Reinigen Sie das Projekt, um loszulegen.

Für Projekt mit nicht vorhandener web.xml Setzen Sie failOnMissingWebXml in pom.xml unter dem Eigenschaftstag auf false.

Saurav
quelle
1

Mach das:

Klicken Sie mit der rechten Maustaste auf Deployment Descriptor und dann auf Generate Deployment Descriptor Stub.

Nuno Marques
quelle
0

Es macht keinen Sinn, eine web.xml zu erstellen, die nur von elcipse gewünscht wird, auch wenn dies nicht erforderlich ist. Dies ist der Fall, wenn Sie einen Servlet-Conatiner eingebettet haben oder ohne XML-CFG leben, wie dies bei Spring-Boot der Fall ist. Das Sie nur JavaEE (nutzloses Zeug) in Eclipse auf Projektebene oder global diable

Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
cforce
quelle
0

Wählen Sie Ihr Projekt aus und wählen Sie die Option "Deployment Descriptor" und dann "Generate Deployment Descriptor stub".

Christina Vimala
quelle
0

Der Schritt: Wählen Sie Ihr Projekt aus und wählen Sie die Option "Deployment Descriptor" und dann "Generate Deployment Descriptor stub". Das Problem ist, dass wir nicht immer web.xml benötigen. Daher ist es am besten, false an pom.xml anzuhängen

Lotchi Dagbo
quelle
0

Klicken Sie mit der rechten Maustaste auf project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

Drücken Sie dann Weiter. Es wird ein WEB-INFOrdner mit einer web.xmlDatei darin erstellt.

2

Das war's.

Vraj Patel
quelle
-1

Erstellen Sie den Ordner WEB-INF in src / webapp und fügen Sie die Seite web.xml in den Ordner WEB-INF ein

basavaraj Marapur
quelle
-1

Entfernen Sie Dateien aus -web / .setting & -admin / .setting

1

jun gao
quelle
-1

Klicken Sie mit der rechten Maustaste auf das Projekt, gehen Sie zu Maven -> Projekt aktualisieren ... , überprüfen Sie die Option Aktualisierung von Snapshots / Releases erzwingen und klicken Sie dann auf OK . Es ist fertig!

João V.
quelle