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
?
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é.
A partir de la version 3.0.0 du plugin, la présence d'un web.xml
n'est plus obligatoire par défaut :
La valeur par défaut de
failOnMissingWebXml
a été modifiée detrue
à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.
web.xml
manquantSi 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>
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