Erreur Eclipse: web.xml est manquant et failOnMissingWebXml est défini sur true

1. Introduction

Dans ce didacticiel, nous aborderons l'erreur Eclipse courante, « web.xml est manquant etest défini sur true », que nous obtenons lors de la création d'une application Web.

2. Erreur Eclipse

Dans les applications Web Java, web.xml est le nom standard du descripteur de déploiement.

Nous pouvons créer une application Web avec Maven ou un projet Web dynamique avec Eclipse. Eclipse ne crée pas le descripteur de déploiement par défaut web.xml sous le répertoire WEB-INF / .

Les spécifications Java EE 6+ ont tenté de réduire l'accentuation des descripteurs de déploiement, car ils peuvent être remplacés par des annotations . Cependant, les versions inférieures l'exigent toujours.

La propriété failOnMissingWebXml est l'une des propriétés du plugin Apache Maven war, org.apache.maven.plugins: maven-war-plugin. La valeur par défaut de ce plugin est true pour la version <3.1.0 et false pour les versions ultérieures.

Cela signifie que si nous utilisons maven-war-plugin antérieur à la version 3.1.0 et que le fichier web.xml n'est pas présent, alors l'objectif de le conditionner en tant que fichier war échouera.

3. Utilisation de web.xml

Pour tous les cas où nous avons encore besoin du descripteur de déploiement web.xml , nous pouvons facilement générer web.xml dans Eclipse :

  • Faites un clic droit sur le projet Web
  • Passez la souris sur Outils Java EE dans le menu
  • Sélectionnez Générer un stub de descripteur de déploiement dans le sous-menu

Voila! le fichier web.xml est généré sous le répertoire WEB-INF / .

4. Sans web.xml

Dans la plupart des cas, il se peut que nous n'ayons pas du tout besoin du fichier web.xml . Au lieu de conserver un fichier web.xml vierge dans notre projet, nous pouvons simplement ignorer sa création. Heureusement, il existe deux approches simples, selon la version du plugin maven-war-plugin que nous utilisons.

4.1. Utilisation de maven-war-plugin avant la version 3.1.0

Nous pouvons configurer tous les plugins d'un projet Maven dans le section de notre pom.xml . Comme nous l'avons dit précédemment, la valeur par défaut de failOnMissingWebXml est true avant la version 3.1.0 du plugin.

Déclarons le -plugin maven-guerre dans notre pom.xml et définir explicitement la propriété failOnMissingWebXml à faux :

 maven-war-plugin 2.4  false  

4.2. Utilisation de maven-war-plugin 3.1.0 et versions ultérieures

Nous pouvons également éviter de définir la propriété explicitement en mettant à jour la version de maven-war-plugin . La valeur par défaut de la propriété failOnMissingWebXml est false pour maven-war-plugin version 3.1.0 et ultérieure:

 maven-war-plugin 3.1.0 

5. Conclusion

Dans cet article, nous avons vu la raison de l' erreur web.xml manquante et plusieurs approches pour la corriger.

Comme d'habitude, notre exemple peut être trouvé sur GitHub.