2008-09-25 19 views
20

Im Moment habe ich zwei Eclipse-Projekte - beide verwenden Maven 2 für all ihre Jar-Abhängigkeits-Güte.Hinzufügen referenzierter Eclipse-Projekte zu maven dependencies

Innerhalb der Eclipse habe ich das Projekt Foo in den Build-Pfad des Projekt-Bars aufgenommen, damit ich Foo's Klassen aus dem Projekt-Balken verwenden kann. Das funktioniert wirklich gut in Eclipse Land, aber wenn ich versuche:

mvn compile 

innen Bar des Verzeichnisses, schlägt fehl, weil Maven weiß nicht, über das Projekt zu Projekt Beziehung in Eclipse Build-Pfad.

Wenn ich eine Ameise benutze, würde ich sie einfach benutzen, um etwas albernes wie foo.jar in Projekt Bars Klassenpfad zu kopieren, aber soweit ich das beurteilen kann, werden die Dinge in Maven-Land viel weniger hackisch gemacht.

Ich frage mich, ob es eine Standardumgehung für diese Art von Problem gibt - es scheint, als wäre es ziemlich häufig, und ich vermisse nur etwas Grundlegendes über wie Maven funktioniert.

+0

aa .. schießen .. Ich habe das schon mal gemacht. Aber ich kann es jetzt nicht finden (zu Hause). Wenn es bis zu dem Zeitpunkt, an dem ich ins Büro zurückkomme, immer noch keine Antwort gibt ... werde ich es für dich nachschlagen. – paan

Antwort

17

Vielleicht verweisen Sie das andere Projekt nur über Eclipse configure-> build path. Dies funktioniert, solange Sie Eclipse zum Erstellen Ihres Projekts verwenden.

Versuchen Sie, zuerst mvn install in der Projektleiste auszuführen (um Bar in Ihr maven-Repository zu legen), und fügen Sie dann die Abhängigkeit zu Foo's pom.xml hinzu.

Das sollte funktionieren !.

1

Ich denke, der beste Weg, damit umzugehen ist, Bar ein Maven-Projekt wie Foo zu machen, und dann mvn install es so in Ihrem lokalen Maven-Repository verfügbar ist. Der Nachteil ist, dass Sie dieses Projekt jedes Mal installieren müssen, wenn Maven die Änderungen an Bar sehen soll.

+0

Genau das wollen die Menschen vermeiden. Wenn du dich entwickelst, änderst du die ganze Zeit die Sachen. Wer würde jedes Mal "mvn installieren" wollen. – T3rm1

1

Keine vollständige Antwort:
Bars Pom muss Foo enthalten, um maven zu verwenden, um es zu kompilieren.
Ich bin in dieser Frage auch interessiert, aber aus der Perspektive, wie Eclipse zu erkennen, eine Maven-Add-Abhängigkeit ist eigentlich ein anderes Projekt im selben Arbeitsbereich. Ich ändere derzeit den Build-Pfad nach der Durchführung mvn eclipse:eclipse

8

Überprüfen Sie die m2eclipse Plugin. Es aktualisiert den Projektbuildpfad automatisch und dynamisch, wenn Sie den Pom ändern. Es ist nicht erforderlich, mvn eclipse:eclipse auszuführen.

Das Plugin erkennt auch, ob sich eine Abhängigkeit im selben Arbeitsbereich befindet und fügt dieses Projekt dem Erstellungspfad hinzu.

Im Idealfall würden Sie, wenn Sie m2eclipse verwenden, niemals den Projektbuild-Pfad manuell ändern. Sie würden stattdessen immer pom.xml bearbeiten, was der richtige Weg ist.

Wie bereits erwähnt, wird Maven nichts über den Buildpfad des Eclipse-Projekts wissen. Sie müssen dem Pom alle Abhängigkeiten hinzufügen, und Sie müssen sicherstellen, dass alle Abhängigkeiten zuerst erstellt und installiert werden, indem Sie mvn install ausführen. Wenn Sie beide Projekte mit einem einzigen Befehl erstellen möchten, finden Sie möglicherweise project aggregation interessant.

2

Vielleicht möchten Sie einen alternativen Ansatz ausprobieren, bei dem Sie ein Elternprojekt und zwei Kinderprojekte haben. Sagen wir:

Eltern (pom.xml hat Verweise auf beiden Kinder Projekte/Module) -> A (abhängig von der B) -> B

dann, wenn Sie mvn eclipse laufen: Eclipse aus der Wurzel der Eltern, wird Maven Eclipse-Projekte generieren für A und B, und es wird B als ein erforderliches Projekt in dem Klassenpfad von A haben.

Sie können mvn install von dem Stamm von Parent ausführen, um beide Projekte zu kompilieren.

Um das Setup abzuschließen, müssen Sie sowohl A als auch B in Eclipse importieren. Achten Sie darauf, dass Sie "Projekte in Arbeitsbereich kopieren" nicht aktivieren.

0

Wenn Sie verweisen auf ein lokales Projekt, aber seine Version aktualisiert wurde (in der Regel erhöht), könnte es vielleicht nur in Ihrem lokalen Repo zu finden, und Sie müssen die (wahrscheinlich fest) Version davon in Ihrem POM aktualisieren (s).


Wir haben ein „gemeinsames Projekt“ (verwendet überall), die nicht unbedingt versioniert werden muss, da wir es über die Quellcodeverwaltung etikettieren. so entweder

  • es an einer festen Version halten oder
  • Referenzierung es mit der speziellen LATEST Version

gute Abhilfen für immer auf der sicheren Seite zu sein.

0

Ich musste nur das tun und ich brauchte es mit dem externen mvn clean install Befehl zu bauen. Hier ist der richtige Weg, um dies in Eclipse zu konfigurieren. (Mit Projekt B als Abhängigkeit von A)

  1. Öffnen Sie die pom.xml für Projekt A in Eclipse.
  2. Wechseln Sie zur Registerkarte Dependencies.
  3. Klicken Sie auf die Add... Knopf in der Mitte der Seite (für die linke Seite Abhängigkeiten Kasten)
  4. im Popup sollte es eine Box unter einer Linie mit Text sein darüber Enter groupId, artifactId or sha1 prefix or pattern (*): sagen. Geben Sie die Artefakt-ID für Projekt B in dieses Feld ein.
  5. Klicken Sie doppelt auf das Glas Sie als eine Abhängigkeit zu diesem Projekt hinzufügen möchten
    1. Möglicherweise müssen Sie das Projekt nach aktualisieren.
    2. Rechts klicken Projekt A in Sie Explorer-Paket
    3. Maven -> Update Project ...
    4. schlagen Sie dann im Popup-OK.
Verwandte Themen