Brak pliku web.xml, a parametr <failOnMissingWebXml> ma wartość true

142

Rozważać:

Tutaj wprowadź opis obrazu

Kiedy tworzę prosty projekt Maven w Eclipse, pojawia się ten błąd:

Brak pliku web.xml i <failOnMissingWebXml>ma on wartość true

Jak mogę rozwiązać ten problem?

Yogesh Doke
źródło
5
Trzeba dodać maven-war-plugin. Jest to niejawna wtyczka, w której domyślną wartością tej właściwości konfiguracyjnej jest prawda. Musisz to jawnie zadeklarować i ustawić właściwość konfiguracji na false. Zobacz więcej tutaj . Lub możesz dodać pusty plik web.xml
Paul Samsotha

Odpowiedzi:

181

Możesz to również zrobić w ten sposób:

  1. Kliknij prawym przyciskiem myszy Deployment Descriptor w Project Explorer .
  2. Wybierz opcję Generuj skrót deskryptora wdrażania .

Wygeneruje WEB-INF folder w src / main / webapp oraz web.xml w nim.

wprowadź opis obrazu tutaj

Wojciechu
źródło
39
Nie polecałbym dodawania standardowego szablonu do kodu tylko dlatego, że narzędzie kompilacji wyświetla błąd.
Martijn Burger
1
@MartijnBurger Czy możesz nas oświecić o możliwych konsekwencjach powyższego włamania i jeśli to możliwe, dodać także inne alternatywy? - pomogłoby początkującym programistom takim jak ja. Dzięki.
Sendhilkumar Alalasundaram
7
Zobacz moją odpowiedź poniżej, aby uzyskać alternatywę. Powyższe rozwiązanie nie jest złe, po prostu należy zawsze dążyć do tego, aby produkt końcowy był tak czysty, jak to tylko możliwe. Dzięki powyższemu rozwiązaniu w produkcie końcowym pojawi się niepotrzebny web.xml plik. Zamiast tego powinieneś rozwiązać ten problem w narzędziu do budowania (np. Maven).
Martijn Burger
Możesz również polecić
Satyendra
doda to niepotrzebny plik do twojego projektu, a inną rzeczą jest to, że web.xml jest ok. stary. jeśli chcesz usunąć ten błąd, po prostu
wymuś
393

To jest błąd maven. Mówi, że oczekuje pliku web.xml w twoim projekcie, ponieważ jest to aplikacja internetowa, na co wskazuje <packaging>war</packaging>. Jednak w przypadku najnowszych aplikacji internetowych plik web.xml jest całkowicie opcjonalny. Maven musi dogonić tę konwencję. Dodaj to do swojego mavena, pom.xmlaby maven nadrobił zaległości i nie musisz dodawać bezużytecznych elementów web.xmldo swojego projektu:

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

Jest to lepsze rozwiązanie niż dodanie pustego, web.xmlponieważ w ten sposób produkt końcowy pozostaje czysty, a jedynie zmieniasz parametry kompilacji.

W przypadku bardziej aktualnych wersji Mavena możesz również użyć krótszej wersji:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Martijn Burger
źródło
28
Ta odpowiedź jest bardziej logiczna niż inne.
smwikipedia
7
Jeśli używasz środowiska in Servlet 3.0+ i masz jakąkolwiek implementację Interface WebApplicationInitializerodpowiedzi, ta odpowiedź jest właściwym podejściem. To rozsądny sposób na rozwiązanie tego problemu - nie ma sensu dodawać web.xmlkolejnych kroków, aby bez tego żyć!
Geeb
4
To lepsza odpowiedź niż tworzenie pustego pliku web.xml
dtortola
1
Działa nawet bez Maven> Aktualizuj projekt. Więc to nie jest potrzebne.
Lucky
13
Rozważ aktualizację swojej odpowiedzi, aby uzyskać krótszą konfigurację, zgodnie z sugestią poniżej . Dołączenie <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>wystarczy zamiast bardziej szczegółowych ustawień konfiguracji wtyczki.
Olivier Cailloux
32

Jeśli masz już plik web.xml w / src / main / webapp / WEB-INF, ale nadal pojawia się błąd „Brak pliku web.xml i jest ustawiony na wartość prawda”, możesz sprawdzić, czy włączyłeś / src / main / webapp w źródło Twojego projektu.

Oto kroki, które możesz wykonać:

  1. Możesz to sprawdzić, klikając prawym przyciskiem myszy projekt i otwierając jego okno dialogowe Właściwości, a następnie „Zespół wdrożeniowy”, w którym można dodać folder / src / main / webapp. Zapisz ustawienie, a następnie
  2. Przejdź do menu Eclipse Projekt -> Wyczyść ... i wyczyść projekt, a błąd powinien zniknąć.

(Sprawdziłem to w Eclipse Mars)

Yuci
źródło
Doświadczyłem tego samego problemu pod „Eclipse Mars” i Twoje opisane rozwiązanie działa idealnie! Dzięki
Hartmut P.
nie działa dla mnie ... Mam już te foldery, a nawet próbowałem ustawić brak pliku web.xml jako fałsz. Nie działa ....
Baradwaj Aryasomayajula
19

Jeśli używasz Spring Tool Suite, opcja Generate Deployment Descriptor Stub jest przenoszona do Java EE Tools, więc:

  1. Kliknij prawym przyciskiem myszy swój projekt
  2. Wybierz Java EE Tools
  3. Wybierz opcję Generate Deployment Descriptor Stub

Spowoduje to utworzenie pliku web.xml w folderze src / main / webapp / WEB-INF / i oczywiście usunięcie błędu z pliku pom.xml Mavena.

wprowadź opis obrazu tutaj

milan.latinovic
źródło
16

Mam ten sam problem. Po nauce i googlowaniu rozwiązałem problem:

Kliknij prawym przyciskiem myszy folder projektu, przejdź do Java EE Tools, wybierz Generate Deployment Descriptor Stub. Spowoduje to utworzenie web.xmlw folderze src/main/webapp/WEB-INF.

Tung
źródło
3
Nie polecałbym dodawania standardowego szablonu do kodu tylko dlatego, że narzędzie kompilacji wyświetla błąd.
Martijn Burger
16

Możesz też zrobić to mniej szczegółowo

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
liam mooney
źródło
Najbardziej eleganckie rozwiązanie IMHO. Zobacz dokument (i stary błąd zaćmienia, który uniemożliwiał działanie tego rozwiązania, teraz rozwiązany).
Olivier Cailloux
9

Eclipse rozpoznaje nieprawidłowy webappkatalog domyślny . Dlatego powinniśmy to jasno określić do 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>

Po zapisaniu tego ustawienia błąd nigdy nie wystąpi po jego usunięciu. (Nie potrafię wyjaśnić dlaczego.)

出 羽 和 之
źródło
3

Miałem ten sam problem, mimo że miałem 'src/main/webapp/WEB-INF/'folder z poprawnym web.xml.

Problem zniknął po ponownym utworzeniu konfiguracji (maven-> eclipse) z Maven build..wykonaniemmvn eclipse:clean eclipse:eclipse

Następnie Maven -> Update Projectdodałem (eclipse-> maven) opcje specyficzne dla wtyczki.

Boris Treukhov
źródło
To samo tutaj, chociaż użyłem resetowania git - hard HEAD
Markus Barthlen
Dziękuję, to też mi pomogło. Kliknij prawym przyciskiem myszy -> Maven -> Update Project
trebor
2

Napotkałem ten problem tylko w eclipse, wszystko działało dobrze w wierszu poleceń Maven, a mój plik web.xml istniał. To był dojrzały projekt (już wdrożony w produkcji), na który miało to wpływ. Mój problem był związany z metadanymi zaćmienia. Wystąpił problem z jednym z plików w moim folderze .settings /, w szczególności zmieniono składnik org.eclipse.wst.common.com. Udało mi się przywrócić ten plik do jego poprzedniej wersji, co rozwiązało problem w moim przypadku.

Zauważ, że odpowiedź Yuciego nie zadziałała dla mnie, kiedy próbowałem kliknąć Deployment Assembly we właściwościach zaćmienia, otrzymałem błąd o treści „aktualnie wyświetlana strona zawiera nieprawidłowe wartości”.

Sztylet Gilberta Arenasa
źródło
Miałem taką samą sytuację i musiałem przywrócić plik org.eclipse.wst.common.component z mojego folderu .settings / i mój projekt działa teraz, najwyraźniej zawartość komponentu została usunięta, więc nie ma ścieżki do mojej sieci. xml plik. Również, gdy próbowałem otworzyć Deployment Assembly we właściwościach zaćmienia, wystąpił ten sam błąd: „aktualnie wyświetlana strona zawiera nieprawidłowe wartości”. Znalazłem tę odpowiedź trochę późno, ale tak ją rozwiązuję. Świetna odpowiedź przy okazji.
Jorge Valdés
2

Dla projektu z web.xml obecny Projekt -> Właściwości -> Zestaw wdrożeniowy, w którym można dodać folder src / main / webapp. Zapisz zmianę. Wyczyść projekt, aby rozpocząć.

Dla projektu z brakiem web.xml Ustaw failOnMissingWebXml na false w pom.xml w tagu properties.

Saurav
źródło
1

Zrób to:

Idź i kliknij prawym przyciskiem myszy Deployment Descriptor i kliknij Generate Deployment Descriptor Stub.

Nuno Marques
źródło
0

Nie ma sensu tworzenie pliku web.xml po prostu elcipse tego chce, nawet jeśli nie ma takiej potrzeby. Dzieje się tak, jeśli masz osadzony serwlet conatiner lub żyjesz bez xml cfg, tak jak robi to spring-boot. Po prostu dający się porównać JavaEE (bezużyteczne rzeczy) w zaćmieniu na poziomie projektu lub globalnym

Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
cforce
źródło
0

Wybierz projekt i wybierz opcję „Deployment Descriptor”, a następnie wybierz „Generate Deployment Descriptor stub”

Christina Vimala
źródło
0

Krok: Wybierz projekt i wybierz opcję „Deployment Descriptor”, a następnie wybierz opcję „Generate Deployment Descriptor stub”. Problem polega na tym, że nie zawsze jest tak, że potrzebujemy web.xml, dlatego najlepiej jest dodać false do pom.xml

Lotchi Dagbo
źródło
0

Kliknij prawym przyciskiem myszy project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

następnie naciśnij Dalej , utworzy WEB-INFfolder z web.xmlplikiem w środku.

2

Gotowe.

Vraj Patel
źródło
-1

Utwórz folder WEB-INF w src / webapp i umieść stronę web.xml w folderze WEB-INF, a następnie

basavaraj Marapur
źródło
-1

Usuń pliki z -web / .Ustawienie & -admin / .Ustawienie

1

jun gao
źródło
-1

Kliknij prawym przyciskiem myszy projekt, przejdź do Maven -> Aktualizuj projekt ... , następnie zaznacz opcję Wymuś aktualizację migawek / wydań , a następnie kliknij OK . Zrobione!

João V.
źródło