Wie konfiguriere ich den Eclipse-Erstellungspfad für die Verwendung von Maven-Abhängigkeiten?

124

Ich möchte die Funktionen von Maven zum Verwalten von Abhängigkeiten in einem Projekt nutzen. Mein kurzes Verständnis der Funktionsweise von Maven ist, dass es die benötigten JARs beschafft und dann das Projekt mit diesen Bibliotheken erstellt.

Derzeit habe ich eine einfache POM-Datei als Test eingerichtet:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jamesgoodwin.test</groupId>
  <artifactId>com.jamesgoodwin.test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.0.0.RELEASE</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

Um Abhängigkeiten zu verwalten, füge ich normalerweise das Projekt oder die JAR zum Erstellungspfad hinzu und dann kann ich mein Projekt erstellen.

Bei Verwendung von M2Eclipse werden die Abhängigkeiten jedoch nicht automatisch zum Erstellungspfad hinzugefügt. Gibt es eine Konfiguration, um Eclipse wissen zu lassen, dass der Maven die Abhängigkeiten verwaltet?

James Goodwin
quelle

Antworten:

116

Wenn Sie mit der rechten Maustaste auf Ihr Projekt klicken, sollte unter "maven" die Option "Abhängigkeitsverwaltung aktivieren" vorhanden sein. Das ist es.

Buhb
quelle
2
m2eclipse tut dies standardmäßig nicht, wenn Sie ein mit mvn eclipse: eclipse erstelltes Projekt importieren. Dies scheint also immer die Leute zu stolpern.
Matt B
28
Es wurde bereits für mein Projekt aktiviert. Vielleicht, weil ich einem vorhandenen Projekt eine POM-Datei hinzugefügt habe? Maven> Projektkonfiguration aktualisieren scheint es jedoch für mich behoben zu haben. Es war auch Ihre Antwort, die mich schließlich dazu brachte, diese Symbolleiste zu entdecken, in der ich das Projekt reparieren konnte. Vielen Dank
James Goodwin
12
Was ist, wenn das Kontextmenü keine Option "Maven" enthält, obwohl ich anscheinend m2eclipse installiert habe?
dfrankow
85
Ah, "Configure" => "Convert to Maven Project" ist dein Freund!
dfrankow
2
@dfrankow was ist, wenn die Option "Konfigurieren" => "In Maven-Projekt konvertieren" nicht vorhanden ist?
Vasilakisfil
67

wenn Sie ausführen

mvn eclipse:clean

gefolgt von

mvn eclipse:eclipse

if bereitet die Eclipse- .classpathDatei für Sie vor. Das heißt, diese Befehle werden von der Befehlszeile aus, dh außerhalb von Eclipse, gegen Maven ausgeführt.

Davek
quelle
Beachten Sie, dass dies funktioniert, indem Sie eine Klassenpfadvariable (M2_REPO) verwenden, um auf Ihre Abhängigkeiten zu verweisen. Sie verwendet m2eclipse nicht und ich glaube nicht, dass es Abhängigkeiten aufnimmt, die Sie während der Arbeit am Projekt hinzufügen - aber es ist großartig, um die zu erhalten Ersteinrichtung läuft
matt b
@matt b: Sie müssen mvn eclipse: eclipse jedes Mal wiederholen, wenn sich Ihre Abhängigkeiten ändern.
Buhb
Um das zu ergänzen, was Buhb gesagt hat, führen Sie mnv eclipse: eclipse in der Befehlszeile aus und aktualisieren Sie das Eclipse-Projekt jedes Mal, wenn Sie pom.xml weitere Deps hinzufügen.
Binil Thomas
5
Dies ist bei Verwendung des m2eclipse-Plugins nicht erforderlich.
Pascal Thivent
3
Ich verwende das m2eclipse-Plugin und habe das Problem festgestellt, nachdem ich ein vorhandenes Maven-Projekt in Eclipse importiert habe. Tun mvn eclipse:cleanund mvn eclipse:eclipsetatsächlich das Problem für mich behoben.
Aioobe
29

Ich gehe davon aus, dass Sie m2eclipse verwenden, wie Sie es erwähnt haben. Es ist jedoch nicht klar, ob Sie Ihr Projekt unter Eclipse erstellt haben oder nicht. Ich werde versuchen, alle Fälle abzudecken.

  1. Wenn Sie unter Eclipse ein "Java" -Projekt erstellt haben (Strg + N> Java-Projekt), klicken Sie mit der rechten Maustaste auf das Projekt in der Paket-Explorer- Ansicht und gehen Sie zu Maven> Abhängigkeitsverwaltung aktivieren (abhängig von der ursprünglichen Projektstruktur müssen Sie möglicherweise Änderungen vornehmen Es entspricht dem des Maven, z. B. durch Hinzufügen src/javazu den Quellordnern im Erstellungspfad.

  2. Wenn Sie unter Eclipse ein "Maven-Projekt" erstellt haben (Strg + N> Maven-Projekt), sollte es bereits "Maven-fähig" sein.

  3. Wenn Sie ein Maven-Projekt außerhalb von Eclipse erstellt haben (manuell oder mit einem Archetyp), importieren Sie es einfach in Eclipse ( klicken Sie mit der rechten Maustaste auf die Ansicht Paket-Explorer und wählen Sie Importieren ...> Maven-Projekte ), und es ist "Maven-fähig".

Um nun eine Abhängigkeit hinzuzufügen, klicken Sie entweder mit der rechten Maustaste auf das Projekt und wählen Sie Maven> Abhängigkeit hinzufügen ) oder bearbeiten Sie den POM manuell.

PS: Vermeiden Sie die Verwendung des Maven-Eclipse-Plugins, wenn Sie m2eclipse verwenden. Es ist absolut nicht nötig, es wird verwirrend sein, es wird etwas Chaos erzeugen. Nein, verwenden Sie es nur, wenn Sie wirklich wissen, was Sie tun.

Pascal Thivent
quelle
2
Ich habe gerade herausgefunden, dass das Maven-Eclipse-Plugin die Ursache für meine seltsamen ungelösten Abhängigkeitsfehler war. Vielen Dank!
Vaughan
1
Ich verwende nur EclipseNeon, das von der offiziellen Website heruntergeladen wurde. Nachdem ich ein Standard-Java-Projekt erstellt habe, gibt es keine Maven-Option im Menü. Müssen wir etwas separat installieren oder ist alles bereits mit Neon heruntergeladen?
Ewoks
@Pascal Thivent, ich habe das Maven-Projekt importiert. Ich bin nicht in der Lage, die Lösung für dieses
Problem
19

Fügen Sie dies zur .classpath-Datei hinzu.

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

Vielen Dank

Apurva Singh
quelle
1
Ja, ich muss das in den letzten Jahren überall manuell hinzufügen. Warum werden Eclipse-Plugins nicht verschoben, um Maven-Abhängigkeiten automatisch zu erkennen?
Rasiermesser
1
Danke für diese Lösung. Das hat bei mir funktioniert. Ich habe versehentlich .project- und .classpath-Dateien gelöscht. Diese Lösung funktionierte für mich, um Maven-Abhängigkeiten im Klassenpfad hinzuzufügen
Tahir Mehmood
Die Verknüpfung zum automatischen Generieren der obigen .classpath-Datei lautet Projekt -> Maven -> Projekt aktualisieren. Andernfalls einfach Alt + F5
Venkateswara Rao
Hat auch für mich gearbeitet. Die meisten meiner fehlenden Abhängigkeiten wurden behoben, es treten jedoch immer noch einige Probleme auf. Daher frage ich mich, ob die benutzerfreundlicheren Lösungen nicht funktionieren, da irgendwo ein kleiner Fehler vorliegt (aber dieses Verhalten hilft nicht, das Problem zu beheben ...).
Xenoid
14

Klicken Sie mit der rechten Maustaste auf das Projekt Konfigurieren> In Maven-Projekt konvertieren

Dann können Sie alle Maven-bezogenen Menüs für Ihr Projekt sehen.

DevJav
quelle
Der richtige Weg, wenn Sie überhaupt kein MVN-Projekt erstellt haben
Hannes Schneidermayer
10

Mir hat das gefallen ..

Klicken Sie mit der rechten Maustaste auf das Projekt -> Konfigurieren -> In Maven-Projekt konvertieren. Klicken Sie mit der rechten Maustaste auf das Projekt -> Maven -> Abhängigkeiten hinzufügen.

madhu_karnati
quelle
5

In Eclipse (Mars) gehen Sie zu:

Projekteigenschaften -> Maven. Stellen Sie sicher, dass "Abhängigkeiten von Arbeitsbereichsprojekten auflösen" deaktiviert ist .

Thomas Beer
quelle
Dies hat das ursprüngliche Problem nicht gelöst, aber es hat ein anderes Problem gelöst, das ich seit Wochen habe. Nachdem ich diese Option deaktiviert habe, wird mein Projekt, das nur über eine Maven-Befehlszeile ausgeführt wurde, jetzt wieder in Eclipse ausgeführt! Danke dir!
Bill Hileman
4

Ich habe den Maven oder die Konfigurationsmenüs nicht gefunden, aber die folgende Schaltfläche gefunden, die mein Problem gelöst hat:

Geben Sie hier die Bildbeschreibung ein

Borjab
quelle
2

Wenn m2eclipse ordnungsgemäß installiert ist, sollten Abhängigkeiten automatisch hinzugefügt werden. Sie sollten die Eclipse-Projektdateien jedoch generieren, indem Sie Folgendes eingeben:

mvn eclipse:m2eclipse

oder alternativ, wenn Sie m2eclipse nicht verwenden:

mvn eclipse:eclipse
EJB
quelle
3
Achtung: da Version 2.8 Maven-Eclipse-Plugin "Eclipse: M2eclipse" nicht mehr unterstützt (Grund / Informationen warum nicht gefunden)
Wolkenarchitekt
1

Ich hatte eine leichte Abweichung, die einige Probleme verursachte - mehrere Unterprojekte innerhalb eines Projekts. In diesem Fall musste ich in jeden einzelnen Ordner gehen, der ein POM enthielt, den Befehl mvn eclipse: eclipse ausführen und dann die Klassenpfadeinträge manuell in meine Projektklassenpfaddatei kopieren / zusammenführen.

Mearde
quelle
1

Für neuere Eclipse-Versionen (> = Mars) klicken Sie mit der rechten Maustaste auf Projekt> Konfigurieren> In Maven-Projekt konvertieren

JBoy
quelle
1

Hinzufügen meiner Antworten aus mehreren Gründen:

  • Irgendwie hat keine der aufgelisteten Antworten mein Problem direkt gelöst.
  • Ich konnte "Abhängigkeitsverwaltung aktivieren" unter Maven nicht finden. Ich verwende Eclipse 4.4.2 Build am Mittwoch, 4. Februar 2015.

Was mir geholfen hat, war eine weitere Option unter Maven, die als "Projekt aktualisieren" bezeichnet wurde. Wenn ich darauf klicke, wird dieses Fenster geöffnet, in dem das Kontrollkästchen "Aktualisierung von Snapshot / Releases erzwingen" angezeigt wird. Der eigentliche Zweck dieses Kontrollkästchens ist anders, ich weiß, aber irgendwie hat es das Abhängigkeitsproblem gelöst. Geben Sie hier die Bildbeschreibung ein

Saurabh Patil
quelle
1

Nichts davon löste mein Problem. Aber was ich getan habe war, wenn ich auf die pom.xml klicke, gibt es unten eine Registerkarte mit dem Namen Abhängigkeiten. Auf dieser Registerkarte ist es in zwei Abschnitte unterteilt, einen als Abhängigkeiten und einen als Abhängigkeitsmanagement. Wählen Sie alles im Abschnitt "Abhängigkeit" aus und klicken Sie auf "Hinzufügen", um sich unter der Kontrolle der Abhängigkeitsverwaltung zu befinden. Schließen Sie Ihr Projekt und öffnen Sie es erneut.

amralieg
quelle
0

Vielleicht könnten Sie sich das Maven-Eclipse-Plugin anstelle von M2Eclipse ansehen.

Dort fügen Sie Ihrer pom.xml im Grunde genommen die Konfiguration des Maven-Eclipse-Plugins hinzu und führen sie dann aus, mvn eclipse:eclipsewodurch die erforderlichen Dateien .projectund .classpathDateien für Eclipse generiert werden . Dann haben Sie den richtigen Erstellungspfad in Eclipse.

Juha Syrjälä
quelle
Eclipse: Eclipse ist schlecht, fügt alle Bibliotheken, eins nach dem anderen, um Ihre Abhängigkeiten , anstatt sich auf Maven
Rasiermesser
0

Stellen Sie sicher, dass Ihr POM der Namenskonvention entspricht und in Kleinbuchstaben als pom.xmlund NICHT benannt ist POM.xml.

In meinem Fall war alles in Ordnung, aber Eclipse beschwerte sich immer noch, als er versuchte, mit der rechten Maustaste zu klicken, und Update project configuration- sagte mir, dass der POM nicht gelesen werden konnte. Der Name wurde in Kleinbuchstaben geändert - pom.xmlvon POM.xml- und es hat funktioniert.

Karun
quelle
0

Ich habe dieses Problem auch getroffen. Wenn ich Abhängigkeiten in die hinzufüge pom.xml, habe ich den lokalen Ordner eingecheckt /Users/xyz/.m2/und die Jars sind dort bereits heruntergeladen, aber der Build-Pfad der Eclipse kann nicht hinzugefügt werden.

Meine Eclipse-Version: Mars.2 Release (4.5.2)

Klicken Sie mit der rechten Maustaste auf Projekt > Maven > Arbeitsbereichsauflösung aktivieren.

Dies löste mein Problem.

Eddy
quelle
0

In der Regel können Sie die .classpath-Datei aus einem Arbeitsprojekt kopieren, da hier nichts Projektspezifisches vorhanden ist, vorausgesetzt, Sie sind als Standard-Maven-Projekt strukturiert.

Puneet Lamba
quelle
0

Dies hat bei mir in Eclipse Oxygen (4.7.0) funktioniert:

Klicken Sie mit der rechten Maustaste auf Projekt -> Maven -> Maven-Profile auswählen ... und aktivieren Sie das Kontrollkästchen Repository-Proxy. Klicken Sie auf OK.

r590
quelle