Cuando creas un proyecto con Maven en el IDE de Eclipse, puedes tener el siguiente error:
web.xml is missing and is set to true
¿Cómo solucionar web.xml is missing and failOnMissingWebXml is set to true?
Para solucionar dicho error sigue los siguientes pasos:
- Da clic derecho sobre el proyecto en donde tienes el error.
- Navega hasta la opción Java EE Tools
- Selecciona “Generate Deployment Descriptor stub“
- Lo anterior debe generar el archivo web.xml
Con los pasos anteriores, deberías de poder ver el siguiente archivo web.xml y en la pestaña de Markers, ya no se debe mostrar el error.
¿Porqué pasa este error?
Porque estas usando una versión de maven inferior al 3.1.0, a continuación un poco más de detalle.
Las especificaciones Java EE 6+ han intentado quitar el énfasis a los descriptores de implementación, ya que pueden reemplazarse por anotaciones . Sin embargo, las versiones inferiores todavía lo requieren.
Desde la versión de Java EE 6 y superiores, se esta “promoviendo” no usar el archivo web.xml, mejor conocido como deployment descriptor o descriptor de despliegue.
Ya que a partir de dicha versión de Java, en lugar de usar el archivo web.xml, se puede usar clases de java con anotaciones (@WebServlet, @WebFilter y @WebListener).
Resulta que dependiendo de la versión de Maven que estés usando, este archivo lo toma como requerido, es decir, que debe de estar presente en el proyecto.
La propiedad failOnMissingWebXml es una de las propiedades del plug-in de Apache Maven War, org.apache.maven.plugins: maven-war-plugin. A partir de la versión 3.1.0 o superior, esta propiedad viene con el valor false, por default.