Error de Eclipse: falta web.xml y failOnMissingWebXml está establecido en verdadero

1. Introducción

En este tutorial, analizaremos el error común de Eclipse, " falta web.xml yse establece en verdadero ”, que obtenemos al crear una aplicación web.

2. Error de Eclipse

En las aplicaciones web Java, web.xml es el nombre estándar del descriptor de implementación.

Podemos crear una aplicación web usando Maven o un proyecto web dinámico usando Eclipse. Eclipse no crea el descriptor de implementación predeterminado web.xml en el directorio WEB-INF / .

Las especificaciones de Java EE 6+ han intentado restar importancia a los descriptores de implementación, ya que pueden reemplazarse por anotaciones . Sin embargo, las versiones inferiores aún lo requieren.

La propiedad failOnMissingWebXml es una de las propiedades del complemento war de Apache Maven, org.apache.maven.plugins: maven-war-plugin. El valor predeterminado de este complemento es verdadero para la versión <3.1.0 y falso para las versiones posteriores.

Esto significa que si usamos maven-war-plugin anterior a la versión 3.1.0 y el archivo web.xml no está presente, el objetivo de empaquetarlo como un archivo war fallará.

3. Usando web.xml

Para todos los casos en los que todavía necesitamos el descriptor de implementación web.xml , podemos generar fácilmente web.xml en Eclipse :

  • Haga clic derecho en el proyecto web
  • Desplácese hasta Java EE Tools en el menú
  • Seleccione Generar código auxiliar del descriptor de implementación en el submenú

¡Voila! el archivo web.xml se genera en el directorio WEB-INF / .

4. Sin web.xml

En la mayoría de los casos, es posible que no necesitemos el archivo web.xml en absoluto. En lugar de mantener un archivo web.xml en blanco en nuestro proyecto, simplemente podemos omitir su creación por completo. Afortunadamente, hay dos enfoques simples, dependiendo de la versión del complemento maven-war-plugin que estemos usando.

4.1. Uso de maven-war-plugin antes de 3.1.0

Podemos configurar todos los complementos de un proyecto Maven en el sección de nuestro pom.xml . Como dijimos anteriormente, el valor predeterminado de failOnMissingWebXml es verdadero antes de la versión 3.1.0 del complemento.

Vamos a declarar el experto en la guerra-plugin en nuestro pom.xml y establecer explícitamente la propiedad failOnMissingWebXml a falsa :

 maven-war-plugin 2.4  false  

4.2. Usando maven-war-plugin 3.1.0 y posteriores

También podemos evitar configurar la propiedad explícitamente actualizando la versión de maven-war-plugin . El valor predeterminado de la propiedad failOnMissingWebXml es falso para maven-war-plugin versión 3.1.0 y posteriores:

 maven-war-plugin 3.1.0 

5. Conclusión

En este artículo, vimos la razón detrás del error web.xml faltante y múltiples enfoques para solucionarlo.

Como de costumbre, nuestro ejemplo se puede encontrar en GitHub.