Ich erhalte die folgende Fehlermeldung:
Fehler beim Zusammenstellen von WAR: Das Attribut webxml ist erforderlich (oder bereits vorhandenes WEB-INF / web.xml, wenn es im Aktualisierungsmodus ausgeführt wird).
Ich bin web.xml
am richtigen Ortprojectname\src\main\webapp\WEB-INF\web.xml
Was könnte das verursachen?
Antworten:
Es wäre hilfreich, wenn Sie ein Code-Snippet Ihres Maven-War-Plugins bereitstellen könnten. Sieht so aus, als wäre das
web.xml
am richtigen Ort, aber Sie können trotzdem versuchen, den Ort explizit anzugebenquelle
Diese Lösung funktioniert für mich (ich habe vorher 2.2 verwendet). Außerdem verwende ich Java Based Configuration für Servlet 3.0 und benötige keine web.xml-Datei.
quelle
false
. Sollte also<plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.3</version> </plugin>
ausreichen.Es funktioniert auch perfekt für mich.
quelle
Dies liegt daran, dass Sie web.xml nicht in Ihr Webprojekt aufgenommen haben und versuchen, mit maven Krieg zu führen. Um diesen Fehler zu beheben, müssen Sie die Funktion failOnMissingWebXml in der Datei pom.xml auf false setzen .
Zum Beispiel:
Weitere Informationen finden Sie im Blog: https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html
quelle
Wenn Sie von einer XML-basierten zu einer Java-basierten Konfiguration migrieren und die Notwendigkeit von web.xml durch die Implementierung von WebApplicationInitializer beseitigt haben, entfernen Sie einfach die Anforderung, dass die Datei web.xml vorhanden sein muss.
quelle
Der Wert meines webXml-Tags musste folgendermaßen aussehen, damit er funktioniert:
quelle
<warSourceDirectory>\src\main\webapp</warSourceDirectory>
funktioniert nicht! Nicht in v2.6Ich hatte genau das gleiche Problem und habe es so gelöst:
Machen Sie einen neuen Ordner mit dem Namen
WEB-INF
untersrc/main/webbapp
dannKlicken Sie mit der rechten Maustaste auf Ihre Projekt -> Java EE Tools -> Generate Deployment Descriptor Stub
Dies sollte Ihre generieren
web.xml
Ich hoffe, dies hilft bei der Lösung Ihres Problems: D.
quelle
Es sieht so aus, als hätten Sie web.xml am richtigen Speicherort, aber dennoch wird dieser Fehler häufig dadurch verursacht, dass die Verzeichnisstruktur nicht mit den Erwartungen von Maven übereinstimmt. Wenn Sie beispielsweise mit einer Eclipse-Webanwendung beginnen, die Sie mit Maven erstellen möchten.
Wenn dies das Problem ist, besteht eine schnelle Lösung darin, ein
src/main/java
und einsrc/main/webapp
Verzeichnis (und andere Verzeichnisse, falls erforderlich) zu erstellen und einfach Ihre Dateien zu verschieben.Hier ist eine Übersicht über das Layout des Maven-Verzeichnisses: http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
quelle
Wenn Sie den Standardprojektpfad ändern, müssen Sie den Speicherort der Datei web.xml angeben, z. B.:
quelle
In der Dokumentation heißt es: Gibt an, ob der Build fehlschlagen soll, wenn die Datei web.xml fehlt. Setzen Sie diesen Wert auf false, wenn Sie möchten, dass WAR ohne eine web.xml-Datei erstellt wird. Dies kann nützlich sein, wenn Sie ein Overlay erstellen, das keine web.xml-Datei enthält. Der Standardwert ist: true. Die Benutzereigenschaft lautet: failOnMissingWebXml.
Hoffe es macht klarer
quelle
Es hat auch bei mir funktioniert.
quelle
WEB-INF\web.xml already added, skipping
. Das ist komisch, wenn ich das nicht hinzufüge, habe ich den Fehler bekommen.WEB-INF\web.xml already added, skipping
mvn-war-plugin 2.3 behebt dies:
quelle
Ich habe den gleichen Fehler auf dem Testserver gehabt, aber nicht auf lokaler Ebene. Nach einigen Minuten stellte ich fest, dass die IDE nicht mit der Datei pom.xml synchronisiert war. So löse ich es:
Generieren Sie den Bereitstellungsdeskriptor mit Eclipse neu
Generieren Sie den Bereitstellungsdeskriptor mit IntelliJ neu
quelle
Stellen Sie sicher, dass pom.xml ordnungsgemäß im Projektordner abgelegt ist. und nicht im Zielordner oder irgendwo anders.
Es sieht so aus, als ob pom.xml nicht relativ ausgerichtet ist.
quelle
Wurde Ihre Ordnerstruktur geändert, sodass sich die Datei nicht mehr unter /src/main/webapp/WEB-INF/web.xml befindet ?
Um dieses Problem zu beheben, habe ich meinem Webordner den Namen webapp gegeben und ihn in src / main abgelegt. Maven scheint standardmäßig unter /src/main/webapp/WEB-INF/web.xml nach web.xml zu suchen . Wenn Sie dies tun, müssen Sie maven nicht explizit mitteilen, wo sich web.xml befindet. Und wenn Sie Ihre Ordnerstruktur geändert haben und Ihr Build kürzlich nicht mehr funktioniert, könnte dies der Grund sein.
Hinweis: Dies ist ein alter Beitrag, aber die veröffentlichten Lösungen zeigen nicht auf, warum ein funktionierender Build plötzlich nicht mehr funktioniert.
quelle
Es gibt viele Antworten und die meisten werden funktionieren, aber ich werde noch einen Punkt hinzufügen, der meiner Meinung nach nicht weniger wichtig ist.
Entsprechend Ihrer Protokollnachricht verwenden Sie
maven
. Maven ist ein Projektmanagement-Build-Tool, das auf einigen Konventionen basiert. Es erstellt das Projekt, erstellt die richtige Verzeichnisstruktur und legt Dateien in entsprechenden Verzeichnissen ab, dieSun Microsystems Directory Structure Standard
für Java EE / Webanwendungen kompatibel sind .Sie können viele Dinge einbeziehen, einschließlich Maven-Plugins, Ändern / Neukonfigurieren des Projektstammverzeichnisses usw., aber Sie können einen einfachen Schritt ausführen, und Ihr Projekt sollte in Ordnung sein. Platzieren Sie einfach Ihre
web.xml
Untersrc\main\webapp\WEB-INF\
und versuchen Sie, das Projekt mit zu bauenmvn package
.Ich hoffe, dass dies diesem Problem etwas mehr Licht verleiht.
quelle
Dieser Fehler tritt auf, weil Sie Maven anweisen, Dateien in den Krieg zu ziehen .
Brauchen Sie wirklich Krieg? Wenn nicht, stellen Sie das Glas dort hin. Hier ist der vollständige Code:
quelle
🔴 failOnMissingWebXml seit 2020
Alle anderen Antworten zu sind möglicherweise veraltet, da sich der vom Maven-War-Plugin verwendete Standardwert geändert hat :
Also das einzige , was Sie tun müssen, ist hinzuzufügen ,
Beispiel:
quelle