web.xml est manquant et <failOnMissingWebXml> est défini sur true

142

Considérer:

Entrez la description de l'image ici

Lorsque je crée simple Maven projet dans Eclipse Je reçois cette erreur:

web.xml est manquant et <failOnMissingWebXml>est défini sur true

Comment puis-je résoudre ce problème?

Yogesh Doke
la source
5
Vous devez ajouter le fichier maven-war-plugin. Il s'agit d'un plugin implicite où la valeur par défaut de cette propriété de configuration est true. Vous devez le déclarer explicitement et définir la propriété de configuration sur false. En savoir plus ici . Ou vous pouvez ajouter un web.xml vide
Paul Samsotha

Réponses:

181

Vous pouvez le faire aussi comme ceci:

  1. Cliquez avec le bouton droit sur Descripteur de déploiement dans l' Explorateur de projets .
  2. Sélectionnez Générer un stub de descripteur de déploiement .

Il générera un dossier WEB-INF dans src / main / webapp et un web.xml dedans.

entrez la description de l'image ici

Wojciechu
la source
39
Je ne recommanderais pas l'ajout de passe-partout au code, simplement parce que votre outil de construction donne une erreur.
Martijn Burger
1
@MartijnBurger Pouvez-vous nous éclairer sur les répercussions possibles du piratage ci-dessus et si possible également ajouter d'autres alternatives? - aiderait les programmeurs novices comme moi. Merci.
Sendhilkumar Alalasundaram
7
Voir ma réponse ci-dessous pour une alternative. La solution ci-dessus n'est pas fausse, c'est juste que vous devez toujours vous efforcer de rendre votre produit final aussi propre que possible. Avec la solution ci-dessus, votre produit final se retrouvera avec un web.xml fichier inutile . Vous devriez résoudre ce problème dans votre outil de construction (c'est-à-dire maven) à la place.
Martijn Burger
Vous pouvez également consulter: eggsylife.co.uk/2009/12/20/…
Satyendra
cela ajoutera un fichier inutile dans votre projet et une autre chose est que l'approcah web.xml est ancien. si vous voulez supprimer cette erreur, il suffit de forcer la mise à jour, l'erreur
maven
393

Ceci est une erreur maven. Il indique qu'il attend un fichier web.xml dans votre projet car il s'agit d'une application Web, comme indiqué par <packaging>war</packaging>. Cependant, pour les applications Web récentes, un fichier web.xml est totalement facultatif. Maven doit rattraper cette convention. Ajoutez ceci à votre maven pom.xmlpour laisser maven rattraper son retard et vous n'avez pas besoin d'ajouter un inutile web.xmlà votre projet:

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

C'est une meilleure solution que d'ajouter un vide web.xmlcar de cette façon votre produit final reste propre, vous ne faites que changer vos paramètres de construction.

Pour les versions plus récentes de maven, vous pouvez également utiliser la version plus courte:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Martijn Burger
la source
28
Cette réponse est plus logique que d'autres.
smwikipedia
7
Si vous utilisez un environnement Servlet 3.0+ et que vous avez une implémentation de Interface WebApplicationInitializercette réponse est l'approche correcte. C'est la manière sensée de résoudre ce problème - inutile d'ajouter web.xmlaprès avoir pris des mesures pour vivre sans lui!
Geeb
4
C'est une meilleure réponse que de créer un web.xml vide
dtortola
1
Fonctionne même sans Maven> Update Project. Ce n'est donc pas nécessaire.
Chanceux
13
Veuillez envisager de mettre à jour votre réponse pour une configuration plus courte, comme suggéré ci-dessous . L'inclusion <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>suffit au lieu des paramètres de configuration du plugin plus détaillés.
Olivier Cailloux
32

Si vous avez déjà web.xml sous / src / main / webapp / WEB-INF mais que vous obtenez toujours l'erreur "web.xml est manquant et est défini sur true", vous pouvez vérifier si vous avez inclus / src / main / webapp dans la source de votre projet.

Voici les étapes que vous pouvez suivre:

  1. Vous pouvez le vérifier en cliquant avec le bouton droit sur votre projet, et ouvrez sa boîte de dialogue Propriétés, puis "Deployment Assembly", où vous pouvez ajouter le dossier / src / main / webapp. Enregistrez le paramètre, puis,
  2. Allez dans le menu Eclipse Projet -> Nettoyer ... et nettoyez le projet, et l'erreur devrait disparaître.

(J'ai vérifié cela avec Eclipse Mars)

Yuci
la source
J'ai rencontré le même problème sous "Eclipse Mars" et la solution décrite fonctionne parfaitement! Merci
Hartmut P.
n'a pas fonctionné pour moi ... J'ai déjà ces dossiers et j'ai même essayé de définir web.xml manquant false. Ça ne marche pas ....
Baradwaj Aryasomayajula
19

Si vous utilisez Spring Tool Suite, l'option Generate Deployment Descriptor Stub est déplacée sous Java EE Tools, de sorte que vous:

  1. Faites un clic droit sur votre projet
  2. Sélectionnez Outils Java EE
  3. Sélectionnez l' option Generate Deployment Descriptor Stub.

Cela créera un fichier web.xml dans le dossier src / main / webapp / WEB-INF /, et bien sûr supprimera l'erreur du fichier pom.xml de Maven.

entrez la description de l'image ici

milan.latinovic
la source
16

J'ai le même problème. Après avoir étudié et cherché sur Google, j'ai résolu mon problème:

Faites un clic droit sur le dossier du projet, allez dans Java EE Tools, sélectionnez Generate Deployment Descriptor Stub. Cela créera web.xmldans le dossier src/main/webapp/WEB-INF.

Tung
la source
3
Je ne recommanderais pas l'ajout de passe-partout au code, simplement parce que votre outil de construction donne une erreur.
Martijn Burger
16

Vous pouvez également faire ceci qui est moins verbeux

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
liam mooney
la source
La solution la plus élégante à mon humble avis. Voir doc (et un ancien bogue d' éclipse qui empêchait cette solution de fonctionner, maintenant résolu).
Olivier Cailloux
9

Eclipse reconnaît un webapprépertoire par défaut incorrect . Par conséquent, nous devons le définir clairement 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>

Une fois ce paramètre enregistré, l'erreur ne se produira jamais si elle est supprimée. (Je ne peux pas expliquer pourquoi.)

出 羽 和 之
la source
3

J'ai eu le même problème, même si j'avais un 'src/main/webapp/WEB-INF/'dossier correct web.xml.

Le problème a disparu après avoir recréé la configuration (maven-> eclipse) avec Maven build..j'ai exécutémvn eclipse:clean eclipse:eclipse

Et puis j'avais l'habitude Maven -> Update Projectd'ajouter des options spécifiques au plugin (eclipse-> maven).

Boris Treukhov
la source
La même chose ici, même si j'ai utilisé git reset --hard HEAD
Markus Barthlen
Merci, cela m'a aidé aussi. Clic droit -> Maven -> Projet de mise à jour
trebor
2

J'ai rencontré ce problème uniquement dans eclipse, tout fonctionnait bien dans la ligne de commande Maven et mon fichier web.xml existait. C'est un projet mature (déjà déployé en production) qui a été impacté. Mon problème était lié aux métadonnées de l'éclipse. Il y avait un problème avec l'un des fichiers de mon dossier .settings /, en particulier org.eclipse.wst.common.component avait été modifié. J'ai pu restaurer ce fichier à sa version antérieure, ce qui a résolu le problème dans mon cas.

Notez que la réponse de Yuci n'a pas fonctionné pour moi, lorsque j'ai essayé de cliquer sur Deployment Assembly dans les propriétés de l'éclipse, j'ai eu une erreur qui disait "la page actuellement affichée contient des valeurs non valides."

Le poignard Gilbert Arenas
la source
J'ai eu la même situation et j'ai dû restaurer le fichier org.eclipse.wst.common.component à partir de mon dossier .settings / et mon projet fonctionne maintenant, apparemment le contenu du composant a été supprimé, il n'a donc pas le chemin vers mon site Web. xml fichier. Aussi, lorsque j'ai essayé d'ouvrir l'assembly de déploiement dans les propriétés de l'éclipse, j'ai eu la même erreur: "la page actuellement affichée contient des valeurs non valides." J'ai trouvé cette réponse un peu tard mais c'est comme ça que je la résous. Excellente réponse d'ailleurs.
Jorge Valdés
2

Pour Project avec web.xml, présentez Project -> Properties -> Deployment Assembly, où vous pouvez ajouter le dossier src / main / webapp. Sauvegarder les modifications. Nettoyez le projet pour commencer.

Pour le projet avec web.xml non présent Définissez failOnMissingWebXml sur false dans pom.xml sous la balise properties.

Saurav
la source
1

Faites ceci:

Allez et faites un clic droit sur Deployment Descriptor et cliquez sur Generate Deployment Descriptor Stub.

Nuno Marques
la source
0

Cela n'a aucun sens de créer un fichier web.xml juste elcipse le veut, même si cela n'est pas nécessaire. C'est le cas si vous avez un conatiner de servlet intégré ou vivant sans cfg xml comme le fait spring-boot. Le vous venez de diable JavaEE (trucs inutiles) dans eclipse au niveau du projet ou global

Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
cforce
la source
0

Sélectionnez votre projet et sélectionnez l'option "Deployment Descriptor" puis choisissez "Generate Deployment Descriptor stub"

Christina Vimala
la source
0

L'étape de: Sélectionnez votre projet et sélectionnez l'option "Deployment Descriptor", puis choisissez "Generate Deployment Descriptor stub" fonctionne correctement. Le problème est que nous n'avons pas toujours besoin de web.xml, il est donc préférable d'ajouter false à pom.xml

Lotchi Dagbo
la source
0

Faites un clic droit sur le project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

puis appuyez sur Suivant, il créera un WEB-INFdossier avec un web.xmlfichier à l'intérieur.

2

C'est fait.

Vraj Patel
la source
-1

Créez le dossier WEB-INF dans src / webapp, et incluez la page web.xml dans le dossier WEB-INF puis

basavaraj Marapur
la source
-1

Supprimer les fichiers de -web / .setting & -admin / .setting

1

jun gao
la source
-1

Faites un clic droit sur le projet, allez dans Maven -> Mettre à jour le projet ... , puis vérifiez la mise à jour forcée des instantanés / versions , puis cliquez sur OK . C'est fait!

João V.
la source