Falta web.xml y <failOnMissingWebXml> está establecido en verdadero


142

Considerar:

Ingrese la descripción de la imagen aquí

Cuando creo un proyecto Maven simple en Eclipse obtengo este error:

Falta web.xml y <failOnMissingWebXml>está establecido en verdadero

¿Como puedo solucionar este problema?


55
Necesitas agregar el maven-war-plugin. Este es un complemento implícito donde el valor predeterminado para esa propiedad de configuración es verdadero. Debe declararlo explícitamente y establecer la propiedad de configuración en falso. Ver más aquí . O puede agregar un web.xml vacío
Paul Samsotha

Respuestas:


181

También puedes hacerlo así:

  1. Haga clic derecho en Descriptor de implementación en el Explorador de proyectos .
  2. Seleccione Generar apéndice de descriptor de implementación .

Se generará WEB-INF carpeta en src / main / webapp y un web.xml en ella.

ingrese la descripción de la imagen aquí


39
No recomendaría agregar repetitivo al código, solo porque su herramienta de compilación da un error.
Martijn Burger

1
@MartijnBurger ¿Puede informarnos sobre las posibles repercusiones del truco anterior y, si es posible, también agregar otras alternativas? - ayudaría a programadores novatos como yo. Gracias.
Sendhilkumar Alalasundaram

77
Vea mi respuesta a continuación para una alternativa. La solución anterior no está mal, es solo que siempre debe esforzarse por hacer que su producto final sea lo más limpio posible. Con la solución anterior, su producto final terminará con un web.xml archivo innecesario . En su lugar, debe solucionar este problema en su herramienta de compilación (es decir, maven).
Martijn Burger

También puede referirse: eggsylife.co.uk/2009/12/20/…
Satyendra

esto agregará archivos innecesarios en su proyecto y otra cosa es que web.xml approcah es antiguo. Si desea eliminar este error, entonces simplemente forzar la actualización del error experto se ha ido
Varshney jitendra

393

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.xmlpara permitir que maven se ponga al día y no necesite agregar un inútil web.xmla 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 vacío web.xmlporque 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>

28
Esta respuesta es más lógica que otras.
smwikipedia

77
Si está utilizando un entorno en Servlet 3.0+ y tiene alguna implementación de Interface WebApplicationInitializeresta respuesta, este es el enfoque correcto. Es la forma sensata de resolver este problema: ¡no tiene sentido agregar el web.xmldespués de tomar medidas para vivir sin él!
Geeb

44
Esta es una mejor respuesta que crear un web.xml vacío
dtortola

1
Funciona incluso sin Maven> Proyecto de actualización. Entonces no es necesario.
Afortunado

13
Considere actualizar su respuesta para una configuración más corta, como se sugiere a continuación . Incluir <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>suficientes en lugar de los ajustes de configuración de complementos más detallados.
Olivier Cailloux

32

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:

  1. 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,
  2. Vaya al menú Eclipse Proyecto -> Limpiar ... y limpie el proyecto, y el error debería desaparecer.

(Verifiqué esto con Eclipse Mars)


Experimentó el mismo problema en "Eclipse Mars" y su solución descrita funciona perfectamente. Gracias
Hartmut P.

no funcionó para mí ... Ya tengo esas carpetas e incluso intenté configurar web.xml falsando. No está funcionando ....
Baradwaj Aryasomayajula

19

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:

  1. Haga clic derecho en su proyecto
  2. Seleccionar herramientas Java EE
  3. 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.

ingrese la descripción de la imagen aquí


16

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.xmlen la carpeta src/main/webapp/WEB-INF.


3
No recomendaría agregar repetitivo al código, solo porque su herramienta de compilación da un error.
Martijn Burger

16

También puedes hacer esto, que es menos detallado

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

La solución más elegante en mi humilde opinión. Ver doc (y un viejo error de eclipse que impedía que esta solución funcionara, ahora resuelto).
Olivier Cailloux

9

Eclipse reconoce el webappdirectorio predeterminado incorrecto . Por lo tanto, debemos establecerlo claramente 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é)


3

Tuve el mismo problema, a pesar de que tenía la 'src/main/webapp/WEB-INF/'carpeta correcta web.xml.

El problema desapareció después de recrear la configuración (maven-> eclipse) con la Maven build..ejecuciónmvn eclipse:clean eclipse:eclipse

Y luego solía Maven -> Update Projectagregar (eclipse-> maven) opciones específicas del complemento.


Lo mismo aquí, aunque usé git reset --hard HEAD
Markus Barthlen

Gracias, esto también me ayudó. Haga clic derecho -> Maven -> Proyecto de actualización
trebor

2

Encontré este problema solo en eclipse, todo funcionó bien en la línea de comandos 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 intenté 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".


Tuve la misma situación y tuve que restaurar el archivo org.eclipse.wst.common.component de mi carpeta .settings / y mi proyecto funciona ahora, aparentemente el contenido del componente se eliminó, por lo que no tiene la ruta a mi web. archivo xml. Además, cuando intenté abrir el ensamblaje de implementación en las propiedades del eclipse, obtuve el mismo error: "la página que se muestra actualmente contiene valores no válidos". Encontré esta respuesta un poco tarde, pero así es como la resuelvo. Gran respuesta por cierto.
Jorge Valdés

2

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.


1

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.


0

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 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

0

Seleccione su proyecto y seleccione la opción "Descriptor de despliegue" y luego elija "Generar código auxiliar de Descriptor de despliegue"


0

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


0

Haga clic derecho en el project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

luego presione Siguiente , creará una WEB-INFcarpeta con un web.xmlarchivo dentro.

2

Ya está hecho.


-1

Cree la carpeta WEB-INF en src / webapp e incluya la página web.xml dentro de la carpeta WEB-INF y luego


-1

Eliminar archivos de -web / .setting & -admin / .setting

1


-1

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!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.