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 в меню.
- Выберите « Создать заглушку дескриптора развертывания » в подменю.
Вуаля! файл 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 .