# Eclipse RCP + Maven + Eclipse IDE



## tuxedo (16. Okt 2008)

Hallo zusammen,

hab mal die eine oder andere Frage zu Maven und Co.

Wir entwickeln eine recht große Eclipse RCP Anwendung mit etlichen Plugins. In Eclipse ist das ja alles recht easy mit dem einrichten von Paketabhängigkeiten, Classpath-Einstellungen etc... 

Für den "headless" build haben wir bisher Ant benutzt. Aber derjenige, der das "zusammengeschustert" hat, scheint da eine Quick'n'Dirty Lösung produziert, die kein Mensch mehr blickt.

Hinzu kommt, dass wir nicht gegen eine einfach zu handhabende Eclipse Target Platform bauen, wir bauen gegen die lokale Eclipse Installation (nicht das gelbe vom Ei, so ist unsere Anwendung abhängig von der Verseion der verwendeten IDE....).

Naja, jetzt geht's drum das zu "verbessern". Es soll eine vernünftoge Target-Platform her, damit man unabhängig von der IDE ist. Und wenn man schon dabei ist, soll das Build-System verbessert werden, so dass es einfacher zu pflegen ist.

Zur Zeit steht Maven zur Diskussion. Ich muss ehrlich sein, ich hab mit Maven noch rein gar nix gemacht. Ich hab nur gelesen und gehört, dass Maven abhängigkeiten recht einfach automatisch auflösen kann, und man da recht flexibel ist. Stark vereinfacht sagt man nur noch: Nimm Library A in Version 1.2 und gut ist. Hat Library A in Version 1.2 dann noch weiter abhängigkeiten, werden diese automatisiert erfüllt. Prima Sache.

Aber was ist jetzt mit meinem Eclipse? Ich will ja nicht nur außerhalb von Eclipse bauen, ich will die Anwendung auch in Eclipse selbst testen und exportieren können. 

Mir wurde gesagt, dass Maven aus der existierenden Config (diese POM Files), für die einzelnen Projekte im Eclipse-Workspace eine Config generieren kann, und damit die Verknüpfung zu den passenden Libs hergestellt wird, so dass auch Eclipse alles sauber compilieren kann.

Und das ist der Punkt der mit ein wenig "missfällt":

Unsere Entwickler bauen und exportieren unsere Anwendung testweise mehrere male am Tag. "Extern" wird nur 2x am Tag automatisiert gebaut. Mit dem Einsatz von Maven, so wie ich es oben beschrieben habe, würde das heißen, dass sich Eclipse an Maven "anpassen" muss, und zwar in Form des erzeugen der Eclipse Projekt COnfig aus den Maven-Configs. Das hört sich nach einem manuellen Eingriff an. 

Wünschenswert wäre es, wenn man innerhalb Eclipse sagen könnte: Ich hätte gerne Version 1.2 von A, Version 4.3 von B ..... -> Mach da mal etwas "funktionierendes" daraus, das meine RCP Pluginprojekte so verwenden können, dass Eclipse sauber durchcompiliert. Sprich: Ich will vermeiden, das man manuell die Eclipse-Projekteinstellungen an die Maven-Konfiguration anpassen muss. Sowas sollte zentral in Eclipse, am besten mit einer passenden UI möglich sein.

Kann mir da jemand weiterhelfen? Gibts da Plugins dafür? Wenn ja: Wo finde ich ein dazugehöriges, gutes Tutorial?

Gruß
Alex


----------



## maki (16. Okt 2008)

Soviel ich weiss ist der PDE Builder nicht gut in Ant integriert (Maven nutzt Ant um Eclipse RCP zu bauen), diese Info ist aber älter (1 Jahr?), kann sein dass sich etwas geändert hat, also ohne Gewähr.



> Ich hab nur gelesen und gehört, dass Maven abhängigkeiten recht einfach automatisch auflösen kann, und man da recht flexibel ist. Stark vereinfacht sagt man nur noch: Nimm Library A in Version 1.2 und gut ist. Hat Library A in Version 1.2 dann noch weiter abhängigkeiten, werden diese automatisiert erfüllt. Prima Sache.


Ja, so in ungefähr.



> Mir wurde gesagt, dass Maven aus der existierenden Config (diese POM Files), für die einzelnen Projekte im Eclipse-Workspace eine Config generieren kann, und damit die Verknüpfung zu den passenden Libs hergestellt wird, so dass auch Eclipse alles sauber compilieren kann.


Ja, dafür gibt es 2 Plugins die das beherrschen: 
- M2 für Eclispe (Maven2 integration, nutzte ich sehr häufig)
- Ein Eclipse Plugin für Maven2 , nennt sich eclipse  Ein Plugin um Eclipse Projektdateien aus poms zu generieren, aufruf: mvn eclipse:eclipse

Denke nicht das Maven2 dir viel helfen wird wegen der PDE Sache, aber vielleicht ist Buckminster etwas für dich, wenn es dir hauptsächlich um die dependencies geht.


----------



## tuxedo (16. Okt 2008)

>> Denke nicht das Maven2 dir viel helfen wird wegen der PDE Sache, 

Das habe ich befürchtet. Bin in Sachen headless build ja auch noch nicht fit, hab aber gelesen, dass der "standard" weg wohl sein soll, Ant-Files aus den Eclipse Pluginsettings zu generieren, und diese dann mit Ant laufen zu lassen. Und so wie ich das sehe, wird das auch zur Zeit bei uns so gemacht.

>> aber vielleicht ist Buckminster etwas für dich, wenn es dir hauptsächlich um die dependencies geht.

Das mit den Dependencies ist nicht das Hauptproblem. Ich mein, wäre schon schick wenn das "kostenlos" mit dem Build-System mit käme. Aber wie gesagt muss die Integration mit Eclipse halt auch sauber gelöst sein. Wenn ich eine neue Library einbaue, oder eine Library in einer neueren Version eingesetzt wird, will ich das nicht an 2 Stellen ändern müssen und noch irgendwelche Settings hin und her synchronisieren, damit ich in Elcipse wieder bauen kann. Das muss in einem einzigen Schritt gehen. Und wenn der Build-Prozess, der 2x am Tag läuft irgendwo in den Eclipse-Settings die Version nachschlagen und/oder extrahieren muss, dann seh ich da auch kein Problem drin. Nur sollte es eben automatisiert gehen.

Da sich die verwendeten Libs 'eh nicht häufig ändern, und wir nur unsere eigenen RCP Plugins basteln, sehe ich persönlich auch kein Problem darin das so weiter zu betreiben wie bisher. Nur müsste es eben etwas aufgeräumter werden. Aber da hilft wohl kein spezielles Build-Tool, da hilft nur das optimale Build Tool zu wählen, und das dann sauber und ordentlich strukturiert zu verwenden, statt eine "just make it work" Mentalität zu verfolgen...

- Alex


----------



## maki (16. Okt 2008)

>> Das habe ich befürchtet. Bin in Sachen headless build ja auch noch nicht fit, hab aber gelesen, dass der "standard" weg wohl sein soll, Ant-Files aus den Eclipse Pluginsettings zu generieren, und diese dann mit Ant laufen zu lassen. Und so wie ich das sehe, wird das auch zur Zeit bei uns so gemacht. 

Hier  wird  beschrieben, wie man das mit Maven2 macht, genutzt wird das maven-antrun-plugin, um die Ant Tasks auszuführen.
Wie gut/stabil das funktioniert kann ich dir nicht sagen.

>> Aber da hilft wohl kein spezielles Build-Tool, da hilft nur das optimale Build Tool zu wählen, und das dann sauber und ordentlich strukturiert zu verwenden, statt eine "just make it work" Mentalität zu verfolgen... 

Hab k. A. wie gut automatische Builds für Eclipse RCP funktionieren/unterstützt werden, denn davon hängt es ab.


----------



## Wildcard (16. Okt 2008)

Was du suchst ist Eclipse Buckminster. So werden auch die Eclipse Projekte gebaut.
Sinn der Sache ist, das sowohl der Entwickler mit einem Klick seinen Workspace eingerichtet bekommt/ein Produkt exportieren kann und der gleiche Mechanismus auch für Headless Builds, Update-Site Erstellung usw. funktioniert.


----------

