Перейти к основному содержимому

Ошибка Eclipse: файл web.xml отсутствует, а для параметра failOnMissingWebXml установлено значение true

· 2 мин. чтения

1. Введение

В этом руководстве мы обсудим распространенную ошибку Eclipse « web.xml отсутствует, а для <failOnMissingWebXml> установлено значение true », которую мы получаем при создании веб-приложения.

2. Ошибка затмения

В веб-приложениях Java web.xml является стандартным именем дескриптора развертывания.

Мы можем создать веб-приложение с помощью Maven или динамический веб-проект с помощью Eclipse. Eclipse не создает дескриптор развертывания по умолчанию web.xml в каталоге WEB-INF/ .

В спецификациях Java EE 6+ была предпринята попытка уменьшить значение дескрипторов развертывания, поскольку их можно заменить аннотациями . Тем не менее, более низкие версии по-прежнему требуют этого.

Свойство failOnMissingWebXml является одним из свойств военного подключаемого модуля Apache Maven , org.apache.maven.plugins:maven-war-plugin. Значение по умолчанию для этого подключаемого модуля — true для версии < 3.1.0 и false для более поздних версий.

Это означает, что если мы используем maven-war-plugin более ранней версии, чем 3.1.0, а файл web.xml отсутствует, то цель упаковать его как военный файл не удастся.

3. Использование web.xml

Для всех случаев, когда нам по-прежнему нужен дескриптор развертывания web.xml , мы можем легко сгенерировать web.xml в Eclipse :

  • Щелкните правой кнопкой мыши веб-проект
  • Наведите указатель мыши на инструменты Java EE в меню.
  • Выберите « Создать заглушку дескриптора развертывания » в подменю.

./6d9472402876d2a6695e70ddd8e93570.jpg

Вуаля! файл web.xml создается в каталоге WEB-INF/ .

4. Без web.xml

В большинстве случаев нам может вообще не потребоваться файл web.xml . Вместо того, чтобы хранить пустой файл web.xml в нашем проекте, мы можем просто вообще не создавать его. К счастью, есть два простых подхода, в зависимости от используемой версии maven-war-plugin .

4.1. Использование плагина maven-war до версии 3.1.0

Мы можем настроить все плагины проекта Maven в разделе <plugins> нашего pom.xml . Как мы уже говорили ранее, значение по умолчанию для failOnMissingWebXml равно true до версии плагина 3.1.0.

Давайте объявим maven-war-plugin в нашем pom.xml и явно установим для свойства failOnMissingWebXml значение false :

<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>

4.2. Использование maven-war-plugin 3.1.0 и более поздних версий

Мы также можем избежать явной установки свойства, обновив версию maven-war-plugin . Значение по умолчанию свойства failOnMissingWebXml равно false для maven-war-plugin версии 3.1.0 и более поздних версий:

<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
</plugin>

5. Вывод

В этой статье мы увидели причину отсутствия ошибки web.xml и несколько подходов к ее устранению.

Как обычно, наш пример можно найти на GitHub .