Eclipse-fout: web.xml ontbreekt en failOnMissingWebXml is ingesteld op true

1. Inleiding

In deze tutorial bespreken we de veelvoorkomende Eclipse-fout: "web.xml ontbreekt en is ingesteld op true“, Die we krijgen bij het maken van een webapplicatie.

2. Eclipse-fout

In Java-webtoepassingen, web.xml is de standaardnaam van de implementatiedescriptor.

We kunnen een webapplicatie maken met Maven of een dynamisch webproject met Eclipse. Eclipse maakt niet de standaarddescriptor van de implementatie web.xml onder de WEB-INF / directory.

In Java EE 6+ -specificaties is geprobeerd de nadruk te leggen op implementatiebeschrijvingen, aangezien deze kunnen worden vervangen door annotaties. De lagere versies hebben dit echter nog steeds nodig.

De failOnMissingWebXml property is een van de eigenschappen van de Apache Maven-oorlogsplug-in, org.apache.maven.plugins: maven-war-plugin. De standaardwaarde van deze plug-in is waar voor versie <3.1.0 en false voor de latere versies.

Dit betekent dat als we maven-war-plugin eerder dan versie 3.1.0, en de web.xml bestand niet aanwezig is, dan mislukt het doel om het als een war-bestand te verpakken.

3. Met behulp van web.xml

Voor alle gevallen waarin we de web.xml implementatie descriptor, kunnen we gemakkelijk genereren web.xml in Eclipse:

  • Klik met de rechtermuisknop op het webproject
  • Plaats de muisaanwijzer op Java EE-hulpprogramma's op het menu
  • Selecteer Genereer een implementatiebeschrijving Stub uit het submenu

Voila! de web.xml bestand wordt gegenereerd onder de WEB-INF / directory.

4. Zonder web.xml

In de meeste gevallen hebben we de web.xml bestand helemaal. In plaats van iets blanco te houden web.xml bestand in ons project, kunnen we het gewoon helemaal overslaan. Gelukkig zijn er twee eenvoudige benaderingen, afhankelijk van welke versie van het maven-war-plugin we gebruiken.

4.1. Met behulp van maven-war-plugin Before 3.1.0

We kunnen alle plug-ins van een Maven-project configureren in het sectie van onze pom.xml. Zoals we eerder hebben gezegd, is de standaardwaarde voor failOnMissingWebXml is waar vóór versie 3.1.0 van de plug-in.

Laten we het maven-war-plugin in onze pom.xml en stel de eigenschap expliciet in failOnMissingWebXml naar false:

 maven-war-plugin 2.4 false 

4.2. Met behulp van maven-war-plugin 3.1.0 en hoger

We kunnen ook voorkomen dat de eigenschap expliciet wordt ingesteld door de versie van maven-war-plugin. De standaardwaarde van de eigenschap failOnMissingWebXml is false voor maven-war-plugin versie 3.1.0 en hoger:

 maven-war-plugin 3.1.0 

5. Conclusie

In dit artikel hebben we de reden achter de vermissing gezien web.xml fout en meerdere benaderingen om het te repareren.

Zoals gewoonlijk is ons voorbeeld te vinden op GitHub.