2013-05-31 6 views
6

Ich habe, was scheint ein Eckfall für Eclipse/Maven und "Abhängigkeiten von Workspace-Projekten zu lösen". Mein Projekt hat eine Mischung aus geschriebenem Code und generiertem Code, wobei der generierte Code von einer Abhängigkeit kommt, die JAXWS verwendet.Eclipse/Maven und "Abhängigkeiten von Workspace-Projekten auflösen" können jars und source nicht mischen?

Das Problem ist, dass, wenn ich "Resolve Abhängigkeiten" überprüfen, Eclipse/Maven JAR Abhängigkeiten ignoriert und versucht, alles nur durch den Blick auf den Arbeitsbereich aufzulösen, was zu Eclipse zeigt Fehler wie "Paket/Klasse nicht gefunden" in Bezug auf den generierten Code), obwohl das Projekt mit Maven von der Kommandozeile gut funktioniert.

Auf der anderen Seite, wenn ich es deaktivieren, löst es alles, indem nur auf die JARs im Maven-Repository. Die zweite Option funktioniert im Allgemeinen, aber wenn ich etwas wie Strg-Klick auf eine Klasse oder Variable mache, bekomme ich den Class File Editor und "Source not found", was nicht besonders nützlich ist. Es kann auch nicht mehr synchron sein, wenn ich Code in der IDE bearbeite, aber danach "maven install" nicht ausführe.

Ich nehme an, das ist hauptsächlich eine Unannehmlichkeit mit Eclipse, aber es ist ärgerlich. Ich überlege mir, dies zu lösen, indem ich die Maven-Abhängigkeiten modifiziere, um mit Source (oder Debug) zu bauen, aber ich kann das nicht mit allem machen. Ist die Option "Abhängigkeiten auflösen" dazu gedacht, ausschließlich auf die eine oder andere Weise zu arbeiten, wie ich es beschrieben habe?

Antwort

3

Vielleicht möchten Sie sich das Build-Helfer-Maven-Plugin ansehen.

Sie können es so konfigurieren:

   <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <id>add-source</id> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>add-source</goal> 
         </goals> 
         <configuration> 
          <sources> 
           <source>target/generated-sources</source> 
           <source>target/jaxws/wsimport/java</source> 
          </sources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

Das Eclipse Maven Plugin sagen, wird einen Blick auf die generierten Quellen haben und es in Ihrem Projekt Classpath.

Sie können die generierten Quellen auch manuell zu Ihrem Klassenpfad in Eclipse hinzufügen. (Klicken Sie mit der rechten Maustaste auf den generierten Ordner -> zum Build-Pfad hinzufügen)

+0

Für diejenigen, die die Option "Add to Build Path" in ihrem Kontextmenü für einen Ordner nicht finden können: in meinem Fall (Eclipse Luna), ist es unter 'Build Path' ->' Als Quellordner verwenden'. –

0

Ich denke, dass, da Sie Dateien referenzieren wollen, die nur nach einem Build existieren, dass Sie den Build irgendwie erzwingen, bevor Sie die Referenzen gelöst brauchen. Sie könnten schummeln, indem Sie einfach einen Build in Eclipse erstellen. Dadurch würden die generierten Quelldateien bereit sein, referenziert zu werden. Ich denke jedoch, dass die Maven-Philosophie dazu führen würde, dass Sie den generierten Code vollständig in ein anderes Maven-Artefakt verschieben. Auf diese Weise können Sie den Lebenszyklus der beiden Code-Gruppen voneinander trennen. Wenn Sie Eclipse zum Bearbeiten des handcodierten Codes verwenden möchten, werden Verweise auf generierte Klassen aufgelöst, da Sie diesen Code bereits im Build von einem generiert haben separates, unabhängiges Modul.

0

Ich weiß, das ist ein altes Problem. Aber ich traf in Juno dasselbe mit einem aktualisierten "m2e-wtp" -Plugin. Ich antworte also ausschließlich für den Nutzen anderer Leser.

Dies geschah nur in Kriegsprojekten. Das einzige Problem, das gelöst wurde, war, den Ordner ".settings" unter dem Ordner des Kriegsprojekts zu entfernen und Eclipse neu zu starten.

Verwandte Themen