Eclipse Error: web.xml липсва и failOnMissingWebXml е зададен на true

1. Въведение

В този урок ще обсъдим често срещаната грешка в Eclipse, „ web.xml липсва ие зададено на true “, което получаваме при създаването на уеб приложение.

2. Грешка при затъмнение

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

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

Спецификациите на Java EE 6+ се опитват да премахнат акцентите на дескрипторите за разполагане, тъй като те могат да бъдат заменени с анотации . По-ниските версии обаче все още го изискват.

В failOnMissingWebXml имота е едно от свойствата на война приставката Apache Maven, org.apache.maven.plugins: Maven войната-плъгин. Стойността по подразбиране на този плъгин е вярна за версия <3.1.0 и невярна за по-новите версии.

Това означава, че ако използваме плъгин maven-war по- рано от версия 3.1.0 и файлът web.xml не присъства, целта да го опаковаме като военен файл ще се провали.

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

За всички случаи, в които все още се нуждаем от дескриптора за внедряване web.xml , можем лесно да генерираме web.xml в Eclipse :

  • Щракнете с десния бутон върху уеб проекта
  • Задръжте курсора на мишката върху Java EE Tools в менюто
  • Изберете Generate Deployment Descriptor Stub от подменюто

Voila! на web.xml файл се генерира под WEB-INF / директория.

4. Без web.xml

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

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

Можем да конфигурираме всички приставки на проект на Maven в раздела на нашия pom.xml . Както казахме по-рано, стойността по подразбиране за failOnMissingWebXml е вярна преди версия 3.1.0 на приставката.

Нека декларираме приставката maven -war в нашия pom.xml и изрично зададем свойството failOnMissingWebXml на false :

 maven-war-plugin 2.4  false  

4.2. Използване на плъгин maven-war 3.1.0 и по-нови версии

Също така можем да избегнем настройването на свойството изрично, като надстроим версията на maven-war-plugin . Стойността по подразбиране на свойството failOnMissingWebXml е false за maven-war-plugin версия 3.1.0 и по - нова версия:

 maven-war-plugin 3.1.0 

5. Заключение

В тази статия видяхме причината за липсващата грешка web.xml и множество подходи за отстраняването й.

Както обикновено, нашият пример може да бъде намерен в GitHub.