web-dev-qa-db-fra.com

Erreur Maven lors de l'assemblage de WAR: l'attribut webxml est requis lors de la construction du projet SpringMVC avec une configuration basée sur Java pure et sans xml

Je développe un projet Spring MVC avec une configuration Java pure. Je reçois le message d'erreur ci-dessous lorsque j'effectue une installation propre de Maven.

Échec d'exécution du but org.Apache.maven.plugins: plugin maven-war: 2.2: war (default-war) sur projet SpringMVC-ShoppingCart: erreur lors de l'assemblage de l'attribut WAR: webxml est requis (ou WEB-INF/web.xml pré-existant si l'exécution est effectuée en mode update ) -> [Aide 1]

L'erreur indique que web.xml est manquant, mais je n'en ai pas eu depuis que j'utilise une configuration Java pure.

Comment s'assurer que le projet génère et crée un fichier war sans web.xml?

14
Omkar Puttagunta

Cette erreur se produit car le maven-war-plugin , version 2.6 ou antérieure, s'attend à ce qu'un fichier src/main/webapp/web.xml soit présent par défaut dans votre projet WAR et ne l'a pas trouvé.

Utiliser des annotations et passer à la version 3.0.0 ou plus récente

A partir de la version 3.0.0 du plugin, la présence d'un web.xmln'est plus obligatoire par défaut :

La valeur par défaut de failOnMissingWebXml a été modifiée de true à false.

Cela signifie que la mise à niveau du plugin résout directement le problème. Vous pouvez ajouter la configuration suivante à votre POM:

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <version>3.0.0</version>
</plugin>

La raison en est que depuis Servlet 3.0, le fichier web.xml n'est plus nécessaire dans une application Web et peut être remplacé par des annotations pour avoir une configuration basée sur Java ( MWAR-262 ). Cependant, comme votre projet peut ne pas utiliser d’annotations pour remplacer ce fichier, auquel cas le web.xml pourrait en fait manquer, un contrôle de cohérence a été ajouté à la version 3.0.1 du plug-in pour vérifier que l'annotation @WebServlet est bien insérée le chemin de classe de compilation de votre projet WAR ( MWAR-396 ). Si ce n'est pas le cas et s'il n'y a pas de fichier web.xml dans votre projet, le plugin échouera quand même par défaut.

Ignorer le web.xml manquant

Si vous souhaitez simplement que le plug-in ignore explicitement un fichier web.xml manquant, quelle que soit l'utilisation des annotations, vous pouvez définir le paramètre failOnMissingWebXml sur false. Un exemple de configuration serait:

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </configuration>
</plugin>
36
Tunaki

C'est parce que vous n'avez pas inclus web.xml dans votre projet Web et que vous essayez de créer une guerre en utilisant maven. Pour résoudre cette erreur, vous devez définir le paramètre failOnMissingWebXml sur false dans le fichier pom.xml.

Par exemple:

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

Veuillez consulter le blog pour plus de détails: https://ankurjain26.blogspot.fr 2017/05/error-assembling-war-webxml-attribute.html

2
Ankur jain