Errore Eclipse: web.xml è mancante e failOnMissingWebXml è impostato su true

1. Introduzione

In questo tutorial, discuteremo del comune errore di Eclipse, " manca web.xml eè impostato su true ", che otteniamo durante la creazione di un'applicazione web.

2. Errore di Eclipse

Nelle applicazioni Web Java, web.xml è il nome standard del descrittore di distribuzione.

Possiamo creare un'applicazione web usando Maven o un progetto web dinamico usando Eclipse. Eclipse non crea il descrittore di distribuzione predefinito web.xml nella directory WEB-INF / .

Le specifiche Java EE 6+ hanno tentato di ridurre l'enfasi sui descrittori di distribuzione, poiché possono essere sostituiti da annotazioni . Tuttavia, le versioni inferiori lo richiedono ancora.

La proprietà failOnMissingWebXml è una delle proprietà del plugin war di Apache Maven, org.apache.maven.plugins: maven-war-plugin. Il valore predefinito di questo plugin è vero per la versione <3.1.0 e falso per le versioni successive.

Ciò significa che se stiamo utilizzando maven-war-plugin precedente alla versione 3.1.0 e il file web.xml non è presente, l'obiettivo di impacchettarlo come file war fallirà.

3. Utilizzo di web.xml

Per tutti i casi in cui abbiamo ancora bisogno del descrittore di distribuzione web.xml , possiamo facilmente generare web.xml in Eclipse :

  • Fare clic con il tasto destro sul progetto web
  • Passa con il mouse su Strumenti Java EE nel menu
  • Seleziona Generate Deployment Descriptor Stub dal sottomenu

Ecco! il file web.xml viene generato nella directory WEB-INF / .

4. Senza web.xml

Nella maggior parte dei casi, potremmo non richiedere affatto il file web.xml . Invece di mantenere un file web.xml vuoto nel nostro progetto, possiamo semplicemente saltare la creazione del tutto. Fortunatamente, ci sono due semplici approcci, a seconda della versione del plugin maven-war- che stiamo utilizzando.

4.1. Usare il plugin maven-war Prima della 3.1.0

Possiamo configurare tutti i plugin di un progetto Maven nel file sezione del nostro pom.xml . Come abbiamo detto in precedenza, il valore predefinito per failOnMissingWebXml è vero prima della versione 3.1.0 del plugin.

Dichiariamo il plugin maven -war nel nostro pom.xml e impostiamo esplicitamente la proprietà failOnMissingWebXml su false :

 maven-war-plugin 2.4  false  

4.2. Utilizzando maven-war-plugin 3.1.0 e versioni successive

Possiamo anche evitare di impostare la proprietà esplicitamente aggiornando la versione di maven-war-plugin . Il valore predefinito della proprietà failOnMissingWebXml è false per maven-war-plugin versione 3.1.0 e successive:

 maven-war-plugin 3.1.0 

5. conclusione

In questo articolo, abbiamo visto il motivo dietro l' errore web.xml mancante e diversi approcci per risolverlo.

Come al solito, il nostro esempio può essere trovato su GitHub.