web.xml відсутній, а <failOnMissingWebXml> встановлено значення true


142

Поміркуйте:

Введіть тут опис зображення

Коли я створюю простий проект Maven в Eclipse, я отримую цю помилку:

web.xml відсутній і <failOnMissingWebXml>встановлено як true

Як я можу виправити цю проблему?


5
Вам потрібно додати maven-war-plugin. Це неявний плагін, де значенням за замовчуванням для цього властивості конфігурації є істина. Потрібно чітко оголосити його та встановити властивість конфігурації значення false. Детальніше дивіться тут . Або ви можете додати порожній web.xml
Пол Самсота

Відповіді:


181

Ви також можете зробити це так:

  1. Клацніть правою кнопкою миші на дескрипторі розгортання в Project Explorer .
  2. Виберіть Створити дескриптор розгортання заглушки .

Він створить папку WEB-INF у src / main / webapp та web.xml у ній.

введіть тут опис зображення


39
Я б не рекомендував додавати кодову табличку до коду, лише тому, що ваш інструмент побудови дає помилку.
Martijn Burger

1
@MartijnBurger Чи можете ви просвітити нас щодо можливих наслідків вищевказаного хака та, якщо можливо, також додати деякі інші варіанти? - допомогли б початківцям програмістам, як я. Дякую.
Sendhilkumar Alalasundaram

7
Дивіться мою відповідь нижче для альтернативи. Наведене вище рішення не є помилковим, просто потрібно завжди прагнути зробити ваш кінцевий продукт максимально чистим. З рішенням вище, ваш кінцевий продукт виявиться непотрібним web.xml файлом. Ви повинні виправити цю проблему в тому, щоб створити інструмент (тобто maven).
Martijn Burger

Ви також можете звернутися: eggsylife.co.uk/2009/12/20 / ...
Satyendra

це додасть непотрібний файл у вашому проекті, інша річ, що web.xml Approcah старий. якщо ви хочете усунути цю помилку, тоді просто змушуйте оновити помилку maven піде
jitendra varshney

393

Це помилка Maven. У ньому йдеться про те, що він очікує, що у вашому проекті буде файл web.xml, оскільки це веб-додаток, як зазначено в <packaging>war</packaging>. Однак для останніх веб-додатків файл web.xml абсолютно необов’язковий. Мейвен потрібно дотримуватися цієї конвенції. Додайте це до своєї Maven, pom.xmlщоб Maven наздогнав, і вам не потрібно додавати марний web.xmlпроект:

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

Це краще рішення, ніж додавання порожнього web.xml оскільки таким чином ваш кінцевий продукт залишається чистим, ви просто змінюєте параметри збірки.

Для більш сучасних версій Maven ви також можете скористатися коротшою версією:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

28
Ця відповідь більш логічна, ніж інші.
smwikipedia

7
Якщо ви використовуєте середовище Servlet 3.0+ і будь-яка реалізація Interface WebApplicationInitializerцієї відповіді - це правильний підхід. Це розумний спосіб вирішити цю проблему - немає сенсу додавати web.xmlпісля того, як робити кроки, щоб жити без неї!
Геб

4
Це краща відповідь, ніж створення порожнього web.xml
dtortola

1
Працює навіть без Maven> Update Project. Тож вона не потрібна.
Лаки

13
Пропонуйте оновити відповідь для більш короткої конфігурації, як запропоновано нижче . У тому числі <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>достатньо замість більш детальних налаштувань конфігурації плагінів.
Олів'є Кайло

32

Якщо у вас вже є web.xml під / src / main / webapp / WEB-INF, але ви все одно отримуєте помилку "web.xml відсутній і встановлено значення true", ви можете перевірити, чи включено ви / src / main / webapp у джерело вашого проекту.

Ось такі кроки:

  1. Ви можете перевірити це, клацнувши правою кнопкою миші проект, відкрийте діалогове вікно Властивості, а потім "Асамблея розгортання", де можна додати папку / src / main / webapp. Збережіть налаштування, а потім,
  2. Перейдіть до меню Затемнення Проект -> Очистити ... та очистіть проект, і помилка повинна усунутись.

(Я перевірив це за допомогою Eclipse Mars)


Випробували те саме питання у розділі "Затемнення Марса", і ваше описане рішення працює ідеально! Спасибі
Хартмут П.

не працювали для мене ... У мене вже є ці папки, і я навіть спробував встановити web.xml, на якому відсутня помилка. Це не працює ....
Baradwaj Aryasomayajula

19

Якщо ви використовуєте Spring Tool Suite, параметр Generate Descript Stub Describrov переміщується під Java EE Tools, тож ви:

  1. Клацніть правою кнопкою миші на вашому проекті
  2. Виберіть Java EE Tools
  3. Виберіть параметр Створити дескриптор розгортання програми

Це створить файл web.xml всередині папки src / main / webapp / WEB-INF / і, звичайно, видалить помилку з файлу pom.xml Maven.

введіть тут опис зображення


16

У мене така ж проблема. Вивчивши та гуглившись, я вирішив свою проблему:

Клацніть правою кнопкою миші на папці проекту, перейдіть до Java EE Tools, виберіть Generate Deployment Descriptor Stub. Це створить web.xmlу папці src/main/webapp/WEB-INF.


3
Я б не рекомендував додавати кодову табличку до коду, лише тому, що ваш інструмент побудови дає помилку.
Martijn Burger

16

Ви також можете зробити це, що є менш багатослівним

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

Найелегантніше рішення ІМХО. Дивіться doc (і стару помилку затемнення, яка завадила цьому рішенню працювати, тепер вирішено).
Олів'є Кайлу

9

Eclipse розпізнає неправильний webappкаталог за замовчуванням . Тому ми повинні чітко це встановити 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>

Після збереження цього параметра помилка ніколи не виникне, якщо її видалити. (Я не можу пояснити, чому.)


3

У мене була така ж проблема, хоча я мав 'src/main/webapp/WEB-INF/'папку з коректною web.xml.

Проблема зникла після того, як я відтворив конфігурацію (maven-> eclipse), яку Maven build..я виконавmvn eclipse:clean eclipse:eclipse

І тоді я використовував Maven -> Update Projectдля додавання (eclipse-> maven) плагінів конкретні параметри.


Те саме тут, хоча я використовував скидання git --hard HEAD
Markus Barthlen

Дякую, і це мені допомогло. Клацніть правою кнопкою миші -> Maven -> Оновити проект
требор

2

Я зіткнувся з цією проблемою лише у затемненні, у командному рядку Maven усе добре працювало, і мій файл web.xml існував. Це вплинуло на зрілий проект (вже розгорнутий у виробництві). Моя проблема була пов'язана з метаданими затемнення. Виникла проблема з одним із файлів у моїй .settings / folder, зокрема org.eclipse.wst.common.component було змінено. Мені вдалося відновити цей файл до його попередньої версії, яка вирішила проблему в моєму випадку.

Зауважте, що відповідь Ючі для мене не спрацювала, коли я намагався натиснути на Збірка розгортання у властивостях затемнення, я отримав помилку, яка сказала, що "поточна відображена сторінка містить недійсні значення".


У мене була така ж ситуація, і мені довелося відновити файл org.eclipse.wst.common.component з моєї .settings / folder, і мій проект працює зараз, мабуть, вміст компонента видалено, тому він не має шляху до моєї мережі. XML-файл. Також, коли я намагався відкрити Асамблею розгортання, у властивостях eclipse з'явилася та сама помилка: "відображена в даний час сторінка містить недійсні значення". Я знайшов цю відповідь трохи пізно, але ось як я її вирішую. Чудова відповідь btw.
Хорхе Валдес

2

Для Project з web.xml присутній Проект -> Властивості -> Асамблея розгортання, куди ви можете додати Folder src / main / webapp. Збережіть зміни. Очистіть проект, щоб розпочати роботу.

Для Project з web.xml не присутній Встановіть помилку falseOnMissingWebXml на false у pom.xml під тегом властивостей.


1

Зробити це:

Перейдіть і клацніть правою кнопкою миші на Дескрипторі розгортання та натисніть кнопку Створити Дескриптор розгортання.


0

Немає сенсу створювати web.xml просто бажаний elcipse, навіть у цьому немає потреби. Це так, якщо у вас вбудований серналевий конатинер або живуть без xml cfg, як це робить весняний завантажувач. Ви просто набираєте JavaEE (непотрібні речі) у затемненні на рівні проекту чи глобально

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

0

Виберіть проект та оберіть "Дескриптор розгортання", а потім оберіть "Створити заглушку дескриптора розгортання"


0

Крок: Виберіть проект та оберіть опцію "Дескриптор розгортання", а потім виберіть "Створити заглушку дескриптора розгортання". Проблема полягає в тому, що нам не завжди так потрібен web.xml, тому найкраще додавати помилку до pom.xml


0

Клацніть правою кнопкою миші на project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

потім натисніть кнопку Далі, це створить WEB-INFпапку з web.xmlфайлом всередині.

2

Ось і зроблено.




-1

Клацніть правою кнопкою миші на проект, перейдіть до Maven -> Update Project ... , потім перевірте Force Update Snapshots / Releases та натисніть кнопку Ок . Зроблено!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.