Możesz zaktualizować swoją odpowiedź dla użytkowników ItelliJ IDEA - IntelliJ tworzy kolejną strukturę projektu, więc będzie to <webXml> web \ WEB-INF \ web.xml </webXml>
próbowałem odpowiedzi, ale nadal otrzymywałem ten sam błąd, zamiast tego zrobiłem to „C: \ Users \ xxxx \ Videos \ maven-projects \ my-project \ src \ webapp \ WEB-INF” i działało dobrze. Nie wiem na czym polega problem. To moje szczęście. Dziękuję
Wersje 3.x tej wtyczki mają teraz domyślnie failOnMissingWebXml na false. Tak <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.3</version> </plugin> powinno wystarczyć.
Jest tak, ponieważ nie uwzględniłeś pliku web.xml w swoim projekcie internetowym i próbujesz zbudować wojnę za pomocą maven. Aby rozwiązać ten błąd, musisz ustawić failOnMissingWebXml na false w pliku pom.xml.
Jeśli przeprowadzasz migrację z konfiguracji opartej na języku XML do konfiguracji opartej na Javie i usunąłeś potrzebę pliku web.xml poprzez wdrożenie WebApplicationInitializer, po prostu usuń wymaganie obecności pliku web.xml.
dokładnie! Nie mogłem tego rozgryźć, dopóki nie zobaczyłem, że na początku miałem tylko cięcie <warSourceDirectory>\src\main\webapp</warSourceDirectory>, nie działa! Nie w wersji 2.6
Wygląda na to, że plik web.xml znajduje się we właściwej lokalizacji, ale mimo to ten błąd jest często spowodowany przez niezgodność struktury katalogów z oczekiwaniami Mavena. Na przykład, jeśli zaczynasz od aplikacji internetowej Eclipse, którą próbujesz zbudować za pomocą Maven.
Jeśli to jest problem, szybkie poprawki jest stworzenie src/main/javaoraz src/main/webappkatalog (i innych katalogów, jeśli ich potrzebują) i po prostu przenieść pliki.
Zgodnie z dokumentacją mówi: czy kompilacja zakończy się niepowodzeniem, jeśli brakuje pliku web.xml. Ustaw na fałsz, jeśli chcesz, aby WAR został zbudowany bez pliku web.xml. Może to być przydatne, jeśli budujesz nakładkę bez pliku web.xml. Wartość domyślna to: prawda. Właściwość użytkownika to: failOnMissingWebXml.
Miałem ten sam błąd na serwerze testowym, ale nie w lokalnym. Po kilku minutach odkryłem, że IDE nie zostało zsynchronizowane z pom.xml. Oto jak to rozwiązać:
Ponownie wygeneruj deskryptor wdrażania za pomocą Eclipse
Kliknij prawym przyciskiem myszy folder projektu
W menu kontekstowym wybierz „Java EE Tools”, a następnie „Generuj deskryptor instalacji Stub”
Spowoduje to utworzenie pliku web.xml.
Ponownie wygeneruj deskryptor wdrażania za pomocą IntelliJ
Kliknij prawym przyciskiem myszy folder projektu
W menu kontekstowym wybierz „Otwórz ustawienia modułu”, a następnie kliknij +, aby dodać deskryptor wdrażania sieci.
Następnie możesz zmienić ścieżkę do deskryptora lub katalogów Web Ressource i po prawej stronie.
Czy struktura folderów została zmieniona, aby plik nie był już w /src/main/webapp/WEB-INF/web.xml ?
Aby rozwiązać ten problem, nadałem mojemu folderowi internetowemu nazwę webapp i umieściłem go w src / main. Wygląda na to, że Maven domyślnie szuka pliku web.xml pod adresem /src/main/webapp/WEB-INF/web.xml . Jeśli to zrobisz, nie musisz wyraźnie informować maven, gdzie jest plik web.xml. A jeśli zmieniłeś strukturę folderów i kompilacja niedawno przestała działać, może to być powód.
Uwaga: jest to stary post, ale opublikowane rozwiązania nie wskazują, dlaczego działająca kompilacja nagle przestaje działać.
Istnieje wiele odpowiedzi i większość z nich zadziała, ale dodam jeszcze jeden punkt, który, moim zdaniem, ma nie mniej ważne znaczenie.
Zgodnie z komunikatem dziennika korzystasz maven. Maven to narzędzie do zarządzania projektami oparte na niektórych konwencjach. Buduje projekt, tworzy odpowiednią strukturę katalogów i umieszcza pliki w odpowiednich katalogach, co jest zgodne z Sun Microsystems Directory Structure Standardaplikacjami Java EE / Web.
Możesz uwzględnić wiele rzeczy, w tym wtyczki maven, zmianę / rekonfigurację katalogu głównego projektu itp., Ale jest tylko jeden prosty krok, który możesz zrobić i twój projekt powinien być w porządku. Wystarczy umieścić web.xmlponiżej src\main\webapp\WEB-INF\i spróbować zbudować projekt mvn package.
Mam nadzieję, że doda to nieco więcej światła temu problemowi.
jar i wojna to zupełnie inne historie. Myślę, że potrzebna jest tutaj wojna, ponieważ archiwum jest wdrażane w kontenerze internetowym i nie jest uruchamiane osobno jako samodzielna aplikacja jar.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.