web-dev-qa-db-fra.com

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

306
user617966

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>
349
Arpit
<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.

133
srv

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>
80
Burhan ARAS

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

25
Ankur jain

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

La valeur de ma balise webXml devait ressembler à ceci pour fonctionner:

<webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml> 
19
BoneGoat

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

15
Catalin Ciolocoiu

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 un
src/main/Java et un
src/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

13
MattC

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

6

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

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>
5
Vineet kaushik

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

  1. Faites un clic droit sur votre dossier de projet
  2. Dans le menu contextuel, choisissez "Outils Java EE", puis "Générer le stub de descripteur de déploiement" Generate web.xml
  3. Il va créer le web.xml. web.xml in project structure

Re-générer le descripteur de déploiement avec IntelliJ

  1. Faites un clic droit sur votre dossier de projet
  2. Dans le menu contextuel, choisissez "Ouvrir les paramètres du module", puis cliquez sur le + pour ajouter le descripteur de déploiement Web. Generate the deployment descriptor
  3. Ensuite, vous pouvez changer le chemin de votre descripteur ou les répertoires de ressources Web . et le sur le côté droit.
  4. Ensuite, vous obtiendrez quelque chose comme: Project structure
4
KeyMaker00

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>
        ...
4
gabor

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.

2
Usman Mutawakil

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

2
Meghashyam

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.

2
Giorgi Tsiklauri

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>
1
Yuliia Ashomok