eclipse - run - Falta web.xml y<failOnMissingWebXml> está establecido en verdadero
maven para eclipse oxygen (17)
Cree la carpeta WEB-INF en src / webapp e incluya la página web.xml dentro de la carpeta WEB-INF y luego
Eclipse reconoce el directorio predeterminado incorrecto de la aplicación
webapp
.
Por lo tanto, deberíamos establecerlo claramente con
maven-war-plugin
.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<webappDirectory>src/main/webapp</webappDirectory>
</configuration>
</plugin>
</plugins>
</build>
Una vez guardada esta configuración, el error nunca se producirá si se elimina. (No puedo explicar por qué)
El paso de: Seleccione su proyecto y seleccione la opción "Descriptor de despliegue" y luego elija "Generar código auxiliar de Descriptor de despliegue" funciona bien. El problema es que no siempre es el caso que necesitamos web.xml, por lo que es mejor agregar falso a pom.xml
Eliminar archivos de -web / .setting & -admin / .setting
Encontré este problema solo en eclipse, todo funcionó bien en la línea de comando de Maven y mi archivo web.xml existía. Fue un proyecto maduro (ya desplegado en producción) que se vio afectado. Mi problema estaba relacionado con los metadatos del eclipse. Hubo un problema con uno de los archivos en mi carpeta .settings /, específicamente org.eclipse.wst.common.component había cambiado. Pude restaurar este archivo a su versión anterior, lo que resolvió el problema en mi caso.
Tenga en cuenta que la respuesta de Yuci no funcionó para mí, cuando traté de hacer clic en Ensamblaje de implementación en las propiedades del eclipse, recibí un error que decía "la página que se muestra actualmente contiene valores no válidos".
Este es un error maven.
Dice que espera un archivo web.xml en su proyecto porque es una aplicación web, como lo indica
<packaging>war</packaging>
.
Sin embargo, para aplicaciones web recientes, un archivo web.xml es totalmente opcional.
Maven necesita ponerse al día con esta convención.
Agregue esto a su maven
pom.xml
para que Maven se
pom.xml
al día y no necesite agregar un
web.xml
inútil a su proyecto:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
Esta es una mejor solución que agregar un
web.xml
vacío porque de esta manera su producto final se mantiene limpio, solo está cambiando sus parámetros de compilación.
Para versiones más actuales de maven también puede usar la versión más corta:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Hacer esto:
Vaya y haga clic derecho en Descriptor de implementación y haga clic en Generar código auxiliar de descriptor de implementación.
Haga clic derecho en el proyecto, vaya a Maven -> Actualizar proyecto ... , luego marque la Actualización forzada de instantáneas / lanzamientos , luego haga clic en Aceptar . ¡Está hecho!
No tiene sentido crear un web.xml, solo elcipse lo quiere, aunque no sea necesario. Este es el caso si tiene un contenedor de servlet incrustado o vive sin xml cfg como lo hace spring-boot. Lo que acaba de marcar JavaEE (cosas inútiles) en eclipse a nivel de proyecto o global
Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
Seleccione su proyecto y seleccione la opción "Descriptor de despliegue" y luego elija "Generar código auxiliar de Descriptor de despliegue"
Si usa Spring Tool Suite, la opción para Generar despliegue de descriptor de despliegue se mueve bajo Herramientas Java EE, por lo que usted:
- Haga clic derecho en su proyecto
- Seleccionar herramientas Java EE
- Seleccione la opción Generar apéndice de descriptor de despliegue
Esto creará el archivo web.xml dentro de la carpeta src / main / webapp / WEB-INF / y, por supuesto, eliminará el error del archivo pom.xml de Maven.
Si ya tiene web.xml en / src / main / webapp / WEB-INF pero aún recibe el error "web.xml no se encuentra y está configurado como verdadero", puede verificar si ha incluido / src / main / webapp en la fuente de tu proyecto
Estos son los pasos que puede seguir:
- Puede verificar esto haciendo clic con el botón derecho en su proyecto, y abra el cuadro de diálogo Propiedades, y luego "Ensamblaje de implementación", donde puede agregar Carpeta / src / main / webapp. Guarde la configuración y luego,
- Vaya al menú Eclipse Proyecto -> Limpiar ... y limpie el proyecto, y el error debería desaparecer.
(Verifiqué esto con Eclipse Mars)
También puedes hacer esto, que es menos detallado
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Tengo el mismo problema. Después de estudiar y buscar en Google, he resuelto mi problema:
Haga clic derecho en la carpeta del proyecto, vaya a
Java EE Tools
, seleccione
Generate Deployment Descriptor Stub
.
Esto creará
web.xml
en la carpeta
src/main/webapp/WEB-INF
.
Tuve el mismo problema, a pesar de que tenía
''src/main/webapp/WEB-INF/''
carpeta
''src/main/webapp/WEB-INF/''
con el
web.xml
correcto.
El problema desapareció después de recrear la configuración (maven-> eclipse) con
Maven build..
mvn eclipse:clean eclipse:eclipse
Y luego usé
Maven -> Update Project
para agregar opciones específicas del complemento (eclipse-> maven).
Para Proyecto con web.xml presente Proyecto -> Propiedades -> Ensamblaje de implementación, donde puede agregar Carpeta src / main / webapp. Guardar cambios. Limpia el proyecto para comenzar.
Para Proyecto con web.xml no presente Establezca failOnMissingWebXml en falso en pom.xml en la etiqueta de propiedades.