web-dev-qa-db-fra.com

Dépendances Maven non visibles dans WEB-INF/lib

J'ai ce problème étrange de rendre mon projet basé sur Maven. J'ai créé un nouveau projet Maven dans Eclipse et activé les facettes Web dynamique. Mais au moment de l'exécution, il génère ClassNotFoundException car les dépendances Maven ne sont pas copiées dans le répertoire WEB-INF/lib. J'ai même essayé d'ajouter la section dépendances de la copie dans POM, mais cela n'a pas aidé.

Quelqu'un ici semblait avoir résolu le problème de la bonne façon, mais je suppose qu'il a oublié de mentionner la solution: :(

61
Suraj Chandran

Cela ne devrait avoir aucun rapport avec Eclipse et m2Eclipse, et éventuellement pour un meilleur support - m2e-wtp . En outre, vous n'avez pas besoin de dépendances de copie. Voici quelques raisons possibles:

  • vous devez appeler mvn package (ou cliquer avec le bouton droit de la souris sur> maven> package) et obtenir un fichier war - le <packaging> (dans le pom) doit être war
  • vos dépendances doivent être avec la portée par défaut (si elles sont provided ou test elles ne seront pas incluses dans l'archive)
  • si vous exécutez le projet en tant que projet Web dynamique sur un serveur dans Eclipse, vous devez ouvrir les propriétés du projet (clic droit> Propriétés) et sélectionner "Assemblage de déploiement". Là, cliquez sur "ajouter", sélectionnez "entrées de chemin de construction", et choisissez "dépendances maven". Cela demandera à WTP d'envoyer les dépendances maven au répertoire du serveur.
162
Bozho

Première installation Maven Integration For Eclipse WTP (Aide-> Marché Eclipse)

Ensuite, dans le fichier pom.xml de votre projet Web, ajoutez simplement:

    <packaging>war</packaging>

Après cela, cliquez avec le bouton droit de la souris sur le projet, Maven -> Mettre à jour le projet, qui doit ajouter automatiquement les dépendances Maven dans l'assembly de déploiement.

12
Vedran

Cliquez avec le bouton droit sur projet> Maven> Mettre à jour le projet Maven> OK corrigé le problème pour moi.

5
Erik-Jan

Vérifiez la propriété Deployment Assembly du projet. J'ai vu certains projets Eclipse générés par mvn Eclipse:eclipse parfois avoir les actifs déployés au mauvais endroit. Si je me souviens bien, la nouvelle Deployment Assembly présentait des problèmes avec les versions antérieures d’Eclipse 3.6 (Helios).

4
andyb

Je viens de faire maven -> projet de mise à jour a fonctionné pour moi.

2
Anil

Si vous examinez votre déploiement et constatez que WEB-Inf/lib est vide de vos dépendances Maven, vous devez vous assurer que ces dépendances Maven figurent dans votre déploiement. Assembly est crucial, comme indiqué dans la réponse choisie. 

Cependant, méfiez-vous d'Eclipse et ne rafraîchissez pas tout, même avec une mise à jour Maven. Si vous nettoyez, reconstruisez et redéployez sans toujours voir le dossier lib en cours de remplissage, essayez de supprimer et d'ajouter de nouveau l'application aux déploiements de serveurs via Serveurs> Ajouter et supprimer. 

Cela a désengorgé le système pour moi.

0
Shaun O'Hagan

vous voulez utiliser le plugin dépendance aux copies

voir this post et les docs

0
mut1na

Cliquez avec le bouton droit de la souris sur le projet -> Assemblage de déploiement: Vérifiez si vous avez les dépendances Maven et toutes les autres qui s'y trouvent . Si ce n'est pas le cas.

(Peut-être alors Maven -> Mise à jour du projet, mais ensuite, regardez à nouveau dans "Assemblée de déploiement" et voyez ce que vous avez.) Ceci a résolu le problème (enfin!) 

0
Robert Fornesdale