Frage

Nicht ein sehr guter Titel, ich werde versuchen und erklären.

Das ist seit Monaten gearbeitet, dann heute aus unerfindlichen Gründen, eclipse kippt eine der Einfuhren aus Geschwistern lösen (Peer-Projekten), wenn sie nichts geändert hat (wirklich!). Keine Eclipse oder Eclipse-Plugin-Updates, keine Änderungen am Quellcode, keine Konfigurationsänderungen.

Ich habe eine ziemlich Standard-Projektstruktur:

parent_project
-- clild_project_a
---- pom.xml
-- clild_project_b
---- pom.xml
-- child_project_c
---- pom.xml
-- pom.xml (for parent).

Nun ist beiden Projekte a und b sind abhängig von dem Code von c.

eine pom.xml projizieren.

  <parent>
    <artifactId>parent_project</artifactId>
    <groupId>com.mydomain.ge</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  ...
  <dependencies>  
    <dependency>
        <groupId>com.mydomain.ge</groupId>
        <artifactId>child_project_c</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>

und in der Mutter pom.xml:

  <modules>
    <module>child_project_a</module>
    <module>child_project_b</module>
    <module>child_project_c</module>
  </modules>

So, jetzt in Eclipse, all Import-Anweisungen in Mitsprache Projekt A Import von Projekt C:

package com.skillkash.ge.api;
import com.skillkash.ge.dao.AlreadyExistsException;

Dies ergibt:

The import com.skillkash.ge.dao.AlreadyExistsException cannot be resolved.

Ich habe versucht, das follwing:

  • Maven sauber machen (rechte Maustaste verwenden> run as-> Maven clen auf alle Kind und Eltern.
  • tun Maven Update abhängigkeit auf allen Projekten
  • tut ein Maven-Paket für jedes Projekt.
  • tun m2 Maven. -> "Update Projektkonfigurationen" auf allen Projekten
  • Neustart Eclipse.
  • , um den Computer neu zu starten.

Hinweis 1 , in Eclipse I 4 separate Projekte, ein für jedes Kind, und einen für die Eltern. die drei Kinderprojekte werden auch in SVN überprüft, aber ich kann das übergeordnete Projekt leicht checkin, wie es die Kinderprojektordner unter sich hat.
Hinweis 2 , ich weiß viel über Ameise, aber ich bin ein noob bei Maven, aber havent hatte keine Probleme mit ihm bis jetzt. z.B. Ive, keine Ahnung, ob Maven Eclipse sagt die Quelle des depentant Projekt zu verwenden, oder wenn es jar ständig in das lokale Repository m2 zu kompilieren hat, und die abhängigen Projekt verwendet das.
Hinweis 3 , alle anderen (extern) abhängigkeit sind in Ordnung.
Hinweis 4 , geprüft Ive, dass "Resolve Abhängigkeiten von Workspace-Projekte" aktiviert ist.
Hinweis 5 , in dem ecipse Java Build-Pfad des Dialogs, die Peer-Projekte, an denen es abhängt scheinen nicht in beide „Quelle“ zu sein, „Projekte“ oder „Bibliotheken“ Tabs. Bibliotheken haben eine „maven depedencies“ Unterstruktur, aber unter thare sind nur externe Gläser wie log4j.

War es hilfreich?

Lösung

Funktioniert es, wenn Sie einen mvn clean install auf dem übergeordneten pom von der Kommandozeile statt in Eclipse zu tun? Das wird ausschließen zwei Dinge:

  1. Unabhängig davon, ob es sich um ein Eclipse-Problem
  2. Unabhängig davon, ob Ihr Problem hat mit Ihnen mit package statt install zu tun

ich bemerkt, dass Sie das Maven Paket Ziel verwendet haben. In der Regel sollten Sie immer mvm clean install tun statt mvn clean package für die Arbeit auf dem lokalen Computer. Wenn Sie Ziel nicht die Installation von verwenden, dann projiziert C nie auf Ihrem lokalen Repository installiert wird (standardmäßig in $ HOME / .m2 / Repository oder die equiv in Windows) und somit nicht durch Projekte A referenziert werden kann, zu und B.

Gelingt das nicht, gehen innerhalb von $ HOME / .m2 / Repository und überprüfen Sie die tatsächlich installierte .jar / .pom für Projekt c. Es ist Verzeichnispfad wird, entsprechen sie den maven Koordinaten (z com / mydomain / ge / child_project_c / 0.0.1-SNAPSHOT). Stellen Sie sicher, dass das Glas hat die Klassen, die Sie innerhalb von ihm erwarten und stellen Sie sicher, dass die pom daneben installiert sieht aus wie das in Ihrem Quell-Repository.

Andere Tipps

Kann keinen Kommentar noch machen, soll aber nicht m2eclipse resolve Arbeitsplatz Projekte, anstatt sie zu lokalen Repository zu installieren und zu lösen sie von dort?

Ich fand heraus, dass MVN ist ziemlich wählerisch, was innerhalb build.properties geschrieben! Ich vor dem gleichen Problem und musste darauf achten, dass

  1. Sowohl source.. = src/ und output.. = bin/ korrekt eingegeben sind.
  2. bin.includes = META-INF,/ und . korrekt eingegeben sind.

Nachdem ich dieses Problem behoben, mvn sauber tat Installation Arbeit wie ein Zauber! @whaley, danke für den Hinweis mit $HOME/.m2/repository es brachte mir tatsächlich die Dateien zu sehen waren wirklich in das Glas fehlt, aufgrund der oben genannten Gründe!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top