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.