web-dev-qa-db-ger.com

Maven-Abhängigkeiten in WEB-INF/lib nicht sichtbar

Ich habe dieses seltsame Problem, wenn ich mein Projekt Maven-basiert mache. Ich habe in Eclipse ein neues Maven - Projekt erstellt und die dynamischen Web-Facetten aktiviert. Zur Laufzeit werden jedoch ClassNotFoundException ausgelöst, da die Maven-Abhängigkeiten nicht in das WEB-INF/lib-Verzeichnis kopiert werden. Ich habe sogar versucht, den Abschnitt copy-dependencies in POM hinzuzufügen, aber es hat nicht geholfen.

Jemand hier schien das richtig gelöst zu haben, aber er hat vergessen, die Lösung zu erwähnen: :(

61
Suraj Chandran

Dies sollte nichts mit Eclipse und m2Eclipse zu tun haben und optional für eine bessere Unterstützung - m2e-wtp . Außerdem benötigen Sie keine Abhängigkeiten zum Kopieren. Hier sind einige mögliche Gründe:

  • sie sollten mvn package aufrufen (oder klicken Sie mit der rechten Maustaste auf> maven> package) und erhalten eine Kriegsdatei. Der <packaging> (im pom) muss war sein.
  • ihre Abhängigkeiten sollten im Standardbereich sein (wenn sie provided oder test sind, werden sie nicht in das Archiv aufgenommen.)
  • wenn Sie das Projekt als dynamisches Webprojekt auf einem Server in Eclipse ausführen, sollten Sie die Projekteigenschaften öffnen (Rechtsklick> Eigenschaften) und "Deployment Assembly" auswählen. Dort klicken Sie auf "Hinzufügen", wählen Sie "Build-Pfad-Einträge" und wählen Sie "Maven-Abhängigkeiten". Dadurch wird WTP angewiesen, die Maven-Abhängigkeiten an das Serververzeichnis zu senden.
162
Bozho

Erste Installation Maven-Integration für Eclipse WTP (Hilfe-> Eclipse Marketplace)

Fügen Sie dann in der Datei pom.xml Ihres Webprojekts Folgendes hinzu:

    <packaging>war</packaging>

Klicken Sie anschließend mit der rechten Maustaste auf das Projekt, Maven -> Projekt aktualisieren, das automatisch Maven-Abhängigkeiten in der Bereitstellungsassembly für Sie hinzufügen sollte.

12
Vedran

Klicken Sie mit der rechten Maustaste auf Projekt> Maven> Maven-Projekt aktualisieren> OK, um dieses Problem zu beheben

5
Erik-Jan

Überprüfen Sie die Deployment AssemblyEigenschaft des Projekts. Ich habe gesehen, dass einige mvn Eclipse:eclipse-generierte Eclipse-Projekte die Assets manchmal am falschen Ort bereitgestellt haben. Soweit ich mich erinnern kann, hatte die neue Deployment Assembly einige Probleme mit früheren Versionen von Eclipse 3.6 (Helios).

4
andyb

Ich habe gerade Maven -> Update-Projekt für mich gearbeitet.

2
Anil

Wenn Sie sich Ihre Bereitstellung ansehen und feststellen, dass WEB-Inf/lib keine Ihrer Maven-Abhängigkeiten enthält, müssen Sie sicherstellen, dass sich diese Maven-Abhängigkeiten in Ihrer Bereitstellung befinden. 

Seien Sie jedoch vorsichtig bei Eclipse und aktualisieren Sie nicht einmal alles mit einem Maven-Update. Wenn Sie bereinigen, neu erstellen und erneut bereitstellen, und der lib-Ordner immer noch nicht aufgefüllt wird, versuchen Sie, die Anwendung zu entfernen und erneut zu den Server-Bereitstellungen hinzuzufügen. 

Dadurch wurde das System für mich freigegeben.

0
Shaun O'Hagan

sie möchten das Copy-Dependencies-Plugin verwenden

siehe this post und die docs

0
mut1na

Klicken Sie mit der rechten Maustaste auf Projekt -> Bereitstellungsassembly: Prüfen Sie, ob Sie die Maven-Abhängigkeiten und alle anderen darin haben . Falls nicht, Klicken Sie mit der rechten Maustaste auf Projekt -> Maven -> Workspace Resolution

(Vielleicht dann Maven -> Update Project, aber dann schau nochmal in "Deployment Assembly" und schau, was du hast.) Das hat es (endlich!) für mich gelöst. 

0