"L'attribut webxml est requis" erreur dans Maven
Je reçois l'erreur suivante:
Erreur lors de l'assemblage de WAR: l'attribut webxml est requis (ou le fichier WEB-INF/web.xml préexistant, s'il est exécuté en mode de mise à jour).
J'ai web.xml
à la bonne place qui est projectname\src\main\webapp\WEB-INF\web.xml
Qu'est-ce qui peut causer cela?
Il serait utile que vous puissiez fournir un extrait de code de votre plugin maven-war-war. On dirait que le web.xml
est au bon endroit, mais vous pouvez toujours essayer de donner l'emplacement explicitement
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>src\main\webapp\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
Cette solution fonctionne pour moi (j'utilisais 2.2 auparavant). De plus, j'utilise Java Configuration basée sur Servlet 3.0 et il n'est pas nécessaire d'avoir un fichier web.xml.
Cela fonctionne parfaitement pour moi aussi.
<project>
.....
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
En effet, vous n’avez pas inclus le fichier web.xml dans votre projet Web et n’avez pas essayé de créer une guerre avec maven. Pour résoudre cette erreur, vous devez définir le failOnMissingWebXml sur false dans fichier pom.xml.
Par exemple:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Veuillez consulter le blog pour plus de détails: https://ankurjain26.blogspot.fr 2017/2017/error-assembling-war-webxml-attribute.html
Si vous migrez d'une configuration XML vers une configuration Java et que vous avez supprimé la nécessité de web.xml en implémentant WebApplicationInitializer, supprimez simplement la nécessité de la présence du fichier web.xml.
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
...
</configuration>
La valeur de ma balise webXml devait ressembler à ceci pour fonctionner:
<webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml>
J'ai eu exactement le même problème et je l'ai résolu comme ceci:
Créez un nouveau dossier nommé WEB-INF
sous src/main/webbapp
puis
Clic droit sur votre Projet -> Java Outils EE -> Générer un stub de descripteur de déploiement
Cela devrait générer votre web.xml
J'espère que cela vous aidera à résoudre votre problème: D
Il semble que le fichier web.xml se trouve au bon emplacement, mais même dans ce cas, cette erreur est souvent due à une structure de répertoire ne correspondant pas à ce que Maven s'attend à voir. Par exemple, si vous commencez avec une application Web Eclipse que vous essayez de créer avec Maven.
Si tel est le problème, une solution rapide consiste à créer unsrc/main/Java
et unsrc/main/webapp
répertoire (et d’autres répertoires si vous en avez besoin) et déplacez simplement vos fichiers.
Voici un aperçu de la disposition du répertoire maven: http://maven.Apache.org/guides/introduction/introduction-to-the-standard-directory-directory-layout.html
Selon la documentation, il est indiqué: si la construction doit échouer si le fichier web.xml est manquant. Définissez la valeur sur false si vous voulez que votre WAR soit construit sans fichier web.xml. Cela peut être utile si vous créez une superposition qui ne contient pas de fichier web.xml. La valeur par défaut est: true. La propriété de l'utilisateur est: failOnMissingWebXml.
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<extensions>false</extensions>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration> </plugin>
J'espère que ça rend plus clair
Si vous modifiez le chemin du projet par défaut, vous devez spécifier l'emplacement du fichier web.xml, par exemple:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
<webXml>src\main\web\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
Il a travaillé pour moi aussi.
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
J'ai eu la même erreur sur le serveur de test mais pas en local. Après quelques minutes, j'ai découvert que le IDE n'était pas synchronisé avec le pom.xml. Voici comment je le résous:
Re-générer le descripteur de déploiement avec Eclipse
- Faites un clic droit sur votre dossier de projet
- Dans le menu contextuel, choisissez "Outils Java EE", puis "Générer le stub de descripteur de déploiement"
- Il va créer le web.xml.
Re-générer le descripteur de déploiement avec IntelliJ
- Faites un clic droit sur votre dossier de projet
- Dans le menu contextuel, choisissez "Ouvrir les paramètres du module", puis cliquez sur le + pour ajouter le descripteur de déploiement Web.
- Ensuite, vous pouvez changer le chemin de votre descripteur ou les répertoires de ressources Web . et le sur le côté droit.
- Ensuite, vous obtiendrez quelque chose comme:
maven-war-plugin 2.3 corrige ceci:
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
</plugin>
...
La structure de votre dossier a-t-elle été modifiée de sorte que le fichier ne se trouve plus maintenant à / src/main/webapp/WEB-INF/web.xml?
Pour résoudre ce problème, j'ai attribué à mon dossier Web le nom webapp et je l'ai placé à l'intérieur du fichier src/main. Maven semble rechercher le fichier web.xml par défaut à / src/main/webapp/WEB-INF/web.xml. Si vous faites cela, vous n'avez pas besoin de dire explicitement à maven où se trouve web.xml. Et si vous avez modifié la structure de vos dossiers et que votre génération a récemment cessé de fonctionner, c'est peut-être pour cela.
Note: Ceci est un ancien post, mais les solutions publiées ne précisent pas pourquoi une version fonctionnant cesserait soudainement de fonctionner.
Assurez-vous que pom.xml est correctement placé dans le dossier du projet. et pas dans le dossier cible ou n'importe où ailleurs.
On dirait que pom.xml n'est pas relativement aligné.
Il y a beaucoup de réponses et la plupart d'entre elles fonctionneront, mais j'ajouterai un point qui, je pense, n'a pas moins d'importance.
Selon votre message de journal, vous utilisez maven
. Maven est un outil de gestion de projet basé sur certaines conventions. Il construit le projet, crée la structure de répertoires appropriée et place les fichiers dans les répertoires correspondants, conformément à Sun Microsystems Directory Structure Standard
pour Java EE/Web.
Vous pouvez incorporer beaucoup de choses, y compris des plugins maven, changer/reconfigurer le répertoire racine du projet, etc., mais vous pouvez effectuer une étape simple et votre projet devrait bien se dérouler. Placez simplement votre web.xml
sous src\main\webapp\WEB-INF\
et essayez de construire le projet avec mvn package
.
J'espère que cela ajoute un peu plus de lumière à ce problème.
Cette erreur se produit parce que vous avez dit à Maven d’emballer des fichiers vers war.
<packaging>war</packaging>
Avez-vous vraiment besoin de la guerre? Sinon, mettez le pot là-bas. Voici le code complet:
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>1.0-SNAPSHOT</version>
<groupId>com.your.groupid</groupId>
<artifactId>artifactid</artifactId>
<packaging>jar</packaging>