RCP Plugin mit häufig benutzen third libraries

lam_tr

Top Contributor
Hallo zusammen,

ich habe bei meinen Projekten (Plugin-Entwicklungen) immer wieder viele third libraries in die Runtime hinzugefügt. Kann ich irgendwie eine allgemeines Plugin, auf dem ich jedes Projekt immer draufzugreifen kann, anstatt immer alle libraries separat in die Plugin.xml einzutragen?

Gruss lam
 

krazun

Bekanntes Mitglied
Du kannst aus jeder library ein eigenes Bundle machen. Siehe: How to create Eclipse plugins from jars

Dann musst du bei den Bundles in denen die lib gebraucht wird nurnoch das Bundle bei den dependencies hinzufügen hast somit nur ein einziges mal die externe lib und musst sie bei Bedarf auch nur an einer einzigen Stelle aktualisieren und nicht für jedes Bundle seperat.

mfg,
krazun
 

lam_tr

Top Contributor
HI krazun,

daran habe ich auch schon gedacht, aber wenn ich so vorgehe, werde ich doch mindestens 30 Plug-Ins in meinen Workspace haben. Kennst du noch andere Wege es zu machen?

Gruss lam
 

krazun

Bekanntes Mitglied
HI krazun,

daran habe ich auch schon gedacht, aber wenn ich so vorgehe, werde ich doch mindestens 30 Plug-Ins in meinen Workspace haben. Kennst du noch andere Wege es zu machen?

Gruss lam

Was spricht denn dagegen? RCP Anwendungen bestehen in der Regel meist aus sehr vielen Plugins (z.B. Eclipse besteht ja auch aus hunderten von Plugins). Das ist ja das schöne an OSGI/Equinox das man Anwendung sehr einfach modularisieren kann. Für jede externe lib ein eigenes Bundle bedeutet halt auch Flexibilität.

Du könntest auch alle externen libs in ein einziges Bundle packen. Allerdings fügst du dann jedem Bundle immer alle libs aus dem lib-Bundle hinzu, selbst wenn vielleicht nur eine davon gebraucht wird, eine sehr unschöne Lösung also.

Alternativ kannst du die Libraries auch einfach der Target-Platform hinzufügen. Einfach ein Lib Bundle erstellen, exportieren, der Target-Platform hinzufügen und das Projekt aus dem workspace löschen. Dann hast du auch jede Lib nur einmal in der Target-Platform und nicht in jedem Bundle seperat und könntest sie dann trotzdem einzeln den Bundles hinzufügen, in denen sie benötigt werden.

Oder wenn es dir nur darum geht nicht auf eine riesen Projekt-Liste schauen zu müssen kannst du dir auch einfach in Eclipse Working Sets definieren. z.B eines für die ganzen externen lib Bundles und eines für den Rest.

mfg,
krazun
 
M

maki

Gast
"Target Platform" ist das Stichwort, du musst gar keinen externen Bundles in deinem Workspace haben, es reicht wenn sie in der Target Platform vorhanden sind.

Gleich kommt bestimmt auch Wildcard und erklärt dir wie man eine Target Platform mit Buckminster materialisieren kann :)
 
G

Gonzo17

Gast
Gleich kommt bestimmt auch Wildcard und erklärt dir wie man eine Target Platform mit Buckminster materialisieren kann :)

Das kann ich auch :D

Ist recht einfach:

importtargetdefinition -A path/to/eclipse.target

Die Target Platform liegt dann im Workspace, wobei -A bedeutet, dass diese Target Platform dann auch aktiv von Buckminster ab jetzt verwendet wird. Eine Target Definition lässt sich in Eclipse auch ganz einfach anlegen, einfach mal "Plugin-Development" schauen.
 
Zuletzt bearbeitet von einem Moderator:
G

Gonzo17

Gast
Buckminster generell dient dazu, um dein Eclipse-Projekt zu materialisieren. Es zieht dir zB automatisch fehlende Abhängigkeiten von Update Sites deiner Wahl. Es löst eben deine Feature/Plugin-Struktur auf und baut dir dann dein Produkt. Und die Target Platform ist sowas wie der Grundstein dafür, darauf wird alles gebaut und dahin kommen auch alles Plugins, die Buckminster zum Bauen deines Produkts verwendet (wenn ich mich recht erinnere).

@krazun
Gibt es denn irgendwelche Unterschiede, wenn man aus Jars Plugins macht? Nunja außer eben, dass man sie wie Plugins behandeln kann und entsprechend schöne Abhängigkeiten aufbauen kann. Aber gibts irgendwelche Nachteile? Haben es nämlich bisher so gelöst, dass wir ein Plugin "externals" haben und dort alle "fremden" Jars sind (kein Stückchen Code). Entweder man bindet dann dieses Plugin eben ein oder nicht - aber wenn, dann hat man halt die volle Ladung.
 
Zuletzt bearbeitet von einem Moderator:

krazun

Bekanntes Mitglied
Allerdings ist es nicht zwangweise nötig. Wenn man sich eingearbeitet hat hilft es wahrscheinlich die Produktivität im Build Prozess zu erhöhen, allerdings kannst du auch so Bundles zur Target-Platform hinzufügen.

Entweder über eine Target-Definition-Datei oder über Window->Plugin-Development->Target Platform

mfg,
krazun
 
G

Gonzo17

Gast
Außerdem will man ja eigentlich auch verhindern, dass irgendwelche Jars in der eigenen Versionsverwaltung vergammeln. Deswegen wäre sowas wie ein repository, das alle deine Abhängigkeiten beinhaltet und cached, eigentlich ideal. Habe gehört Maven kann sowas. Buckminster scheint dafür nur beschränkt geeignet, wobei ich mich meine zu erinnern, dass damals, als ich damit zu tun hatte, gerade irgendwas in der Entwicklung war, also keine Ahnung, ob sich das vielleicht zum Guten gewendet hat. Auf jeden Fall könnte man damit ganz einfach die Abhängigkeiten dann anziehen, wenn man sie braucht und das ziehen ansich geschieht ja eh dann nur einmal.
 

krazun

Bekanntes Mitglied
@krazun
Gibt es denn irgendwelche Unterschiede, wenn man aus Jars Plugins macht? Nunja außer eben, dass man sie wie Plugins behandeln kann und entsprechend schöne Abhängigkeiten aufbauen kann. Aber gibts irgendwelche Nachteile? Haben es nämlich bisher so gelöst, dass wir ein Plugin "externals" haben und dort alle "fremden" Jars sind (kein Stückchen Code). Entweder man bindet dann dieses Plugin eben ein oder nicht - aber wenn, dann hat man halt die volle Ladung.

Wie du schon sagst, wenn man aus externen libs Bundles macht kann man gezielter Abhängigkeiten aufbauen. Ich kann z.B in dem GUI-Bundle das Bundle mit JFreeChart und Eclipse-Nebula hinzufügen, aber alle anderen externen libs nicht. Dafür in dem Domain-Bundle dann das JScience Bundle den dependencies hinzufügen ohne die GUI Bundles als abhändigkeiten aufzunehmen.

Als weiteren Vorteil empfinde ich auch das man die Bundles Versionieren kann. Im Normalfall gibt man dem Bundle dann die gleiche Version wie die Library hat. So kann man über die Bundles und dependencies auch leicht die Versionierung verwalten. Man kann in den Dependencies-Properties eines Bundles ja z.B. auch min und max Versionen für ein Bundle angeben. Das geht aber meines Wissens nach nur wenn man die libs in ein Bundle verpackt. Und dann auch nur wenn jedes Bundle nur eine Lib beinhaltet, da man ja nur eine Versionsangabe für ein Bundle vergeben kann.

mfg,
krazun
 

Wildcard

Top Contributor
Deswegen wäre sowas wie ein repository, das alle deine Abhängigkeiten beinhaltet und cached, eigentlich ideal. Habe gehört Maven kann sowas. Buckminster scheint dafür nur beschränkt geeignet, wobei ich mich meine zu erinnern, dass damals, als ich damit zu tun hatte, gerade irgendwas in der Entwicklung war, also keine Ahnung, ob sich das vielleicht zum Guten gewendet hat.
Ein Repository ist definitiv das richtige Stichwort. Das Problem ist nur, damit Eclipse PDE etwas damit anfangen kann muss es ein P2 Repository sein. Ein solches Repository kann man sowohl automatisiert mit Buckminster oder Maven Tycho bauen, als auch manuell aus Eclipse heraus.
Maven Repositories wären eigentlich wie geschaffen für die Aufgabe, allerdings kann PDE derzeit noch nicht direkt damit kommunizieren. Ich hatte mal PDE gepached um ein Maven Repository direkt in einer Target Platform Definition verwenden zu können, aber mir fehlt etwas die Zeit um es so Rund zu feilen das man es in den Eclipse Code aufnehmen kann.
Wer also ein Maven Repository dafür einsetzen möchte muss zur Zeit ein paar Umwege gehen.
1. Nexus Professional kann ein Repository mit p2 Metadaten dekorieren
2. Eclipse B3 (irgendwann mal der Buckminster Nachfolger) kann Hybrid p2/Maven Repositories erzeugen
3. Ein eigenes processing das p2 Metadaten für ein Maven Repo berechnet.

Hoffentlich tut sich auf PDE oder m2eclipse Seite bald etwas in dieser Richtung, aber falls nicht, dann werde ich mir notgedrungen Variante 3 gegen Ende des Jahres genauer anschauen müssen und hoffe dann eine entsprechende Funktionalität an Apache Archiva spenden zu können. Dann gäbe es zumindest eine FOSS Alternative zur Nexus Professional p2 Funktionalität.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eclipse Plugin PreferencePage BooleanFieldEditor Plattformprogrammierung 1
F OSGi Plugin unter Eclipse arbeitet anders als wenn veröffentlicht Plattformprogrammierung 2
R Aktuelle Datei in Plugin bearbeiten Plattformprogrammierung 2
Farbtopf Tomcat durch anderes Plugin neustarten Plattformprogrammierung 0
Farbtopf Plugin Wunsch Plattformprogrammierung 0
J Charset-Problem nach Plugin-Export Plattformprogrammierung 1
J RCP File Path von selected File in Package Explorer für RCP Plugin Plattformprogrammierung 2
TheWhiteShadow RCP Problem mit Plugin Interaktion Plattformprogrammierung 6
R Einfaches Eclipse-Plugin-Beispiel funktioniert nicht Plattformprogrammierung 5
C plugin development environment eclipse Plattformprogrammierung 4
M Keybinding in Eclipse Plugin Plattformprogrammierung 3
M RCP Plugin Extension Point ist NULL Plattformprogrammierung 7
B Eclipse Plugin Einstellungsleiste Plattformprogrammierung 2
M Plugin - Property Page - Get IResource in View Plattformprogrammierung 4
O Eclipse Plugin - Einfachstes Problem, das es gibt. Plattformprogrammierung 2
L RCP Plugin Template erweitern Plattformprogrammierung 2
I Plugin Testen mit Fragment Project Plattformprogrammierung 2
3 Eclipse Editor Plugin selektiert Projekt nicht Plattformprogrammierung 10
A OSGi Plugin als Service exportieren und verwenden Plattformprogrammierung 12
D Plugin - Properties ohne PropertyPage speichern Plattformprogrammierung 11
T RCP Eclipse RCP: Wo/wann im Plugin ist workbench initialisiert? Plattformprogrammierung 14
V Eigenständige Applikation als Jar in Plugin einbinden Plattformprogrammierung 2
D Plugin - JUnit - Tests aus einem anderen Projekt ausführen Plattformprogrammierung 7
F [FileLocator] Verzeichnisse im Plugin Plattformprogrammierung 2
C Eclipse Plugin NoClassDefFoundError Plattformprogrammierung 4
M Eclipse Plugin Entwicklung - NoClassDefFoundError Plattformprogrammierung 10
C Eclipse Plugin Entwicklung: Editor für Flussdiagramme Plattformprogrammierung 6
F Ecilpse plugin und MWE Workflow: classpath Problem Plattformprogrammierung 12
M RCP Aktivierung eines CommandHandlers, Änderungen in der plugin.xml wirken sich nicht aus... Plattformprogrammierung 2
R Frage zum RCP Plugin-Mechanismus. Plattformprogrammierung 2
B RCP eigenes Eclipse Plugin wird nicht aufgelöst Plattformprogrammierung 7
P Wie bekomme ich ICompilationUnit aus dem event? bei Eclipse-Plugin Plattformprogrammierung 3
M RCP Resources Plugin nutzen und erweitern... aber wie? Plattformprogrammierung 6
X Datei in einem Eclipse Projekt über Plugin zugreifen Plattformprogrammierung 2
J Plugin wird nicht mit gestartet Plattformprogrammierung 4
D Team Plugin Erweiterung Plattformprogrammierung 4
L RCP Plugin als Bundle geklarieren? Plattformprogrammierung 3
hdi Frage zu Eclipse Plugin Development Plattformprogrammierung 12
D Canvas auf View in Eclipse PlugIn Plattformprogrammierung 3
M Eclipe RCP-Application oder Plugin Einstieg Plattformprogrammierung 6
O Problem mit relativen Pfaden in einem RCP-Plugin Plattformprogrammierung 5
hdi Plugin Icon wird nicht angezeigt Plattformprogrammierung 7
H Bibliotheken in Eclipse-Plugin-Projekt verwenden. Plattformprogrammierung 18
T Java Rcp Plugin laden Plattformprogrammierung 4
H Eclipse-Plugin erstellen Plattformprogrammierung 22
hdi Schwierigkeiten mit Plugin für EPF (Eclipse Process Framework) Plattformprogrammierung 3
S Plugin: View beim Button-Klick austauschen Plattformprogrammierung 7
M Fehler bei Plugin Export für eigene Target Platform Plattformprogrammierung 3
hdi Problem bei Eclipse Plugin Export Plattformprogrammierung 9
H Eclipse Plugin Dateihandling Plattformprogrammierung 2
S Plugin Abhängigkeiten/Circle References Plattformprogrammierung 6
G Plugin einbindung Plattformprogrammierung 9
T Erstellen eines "Ersetzten Plugin" aus GEF Plattformprogrammierung 2
S RCP Anwendung nicht weiterladen bei Exception in Plugin Plattformprogrammierung 2
A Eclipse Plugin Programmierung Dateien Refreshen Plattformprogrammierung 2
F Eclipse Plugin - Rückgabewert einer Methode Plattformprogrammierung 4
M Klasse aus PLugin /Fragment anhand von String laden Plattformprogrammierung 3
M Problem beim Zugriff auf Klasse aus Fragment in einem anderen Plugin Plattformprogrammierung 3
T Plugin eines bestehenden Editors hinzufügen Plattformprogrammierung 2
R Eclipse RCP - Plugin erstellen Plattformprogrammierung 2
lumo [Eclipse RCP] Plugin OHNE visuals Plattformprogrammierung 7
S In einem Plugin main einer anderen Klasse aufrufen Plattformprogrammierung 18
N Mit Plugin externe Dateien liefern Plattformprogrammierung 6
R Eclipse RCP vs. Plugin Entwicklung Plattformprogrammierung 5
K Einträge von einem PlugIn unterbinden. Plattformprogrammierung 6
B Eclipse plugin fuer dummys Plattformprogrammierung 11
P ViewPart dynamisch (Install/Deinstall Plugin) anzeigen in Perspektive? Plattformprogrammierung 12
N Eclipse RCP Plugin aus jar starten Plattformprogrammierung 7
M Eclipse Plugin Depedencies auslesen... Plattformprogrammierung 14
reibi Edclipse PlugIn-Entwicklung Plattformprogrammierung 21
N plugin als dependencie Plattformprogrammierung 3
N Benutzen von eigene Plugin im Plugin Plattformprogrammierung 36
N plugin dependencies innerhalb eines projects halten Plattformprogrammierung 11
R Wo/Wie Eclipse Plugin einhängen für Jar-Export? Plattformprogrammierung 14
Spot84 compareeditor in eclipsercp plugin verhält sich komisch Plattformprogrammierung 3
M Plugin wird nicht mehr geladen Plattformprogrammierung 3
M Dateien in PlugIn ansprechen Plattformprogrammierung 12
N einfaches Projekt in Plugin umwandeln Plattformprogrammierung 3
V [erledigt] Eclipse plugin startet nicht Plattformprogrammierung 3
M External JARs in Plugin Plattformprogrammierung 5
N preference page plugin Plattformprogrammierung 3
N programm in plugin umwandeln Plattformprogrammierung 3
N plugin architektur Plattformprogrammierung 15
S Eclipse-Plugin + Velocity + Files lesen Plattformprogrammierung 3
dzim immer noch Probleme bei PlugIn-Integrierung Plattformprogrammierung 2
C AST (Abstract Syntax Tree)-Generierung für Eclipse-Plugin Plattformprogrammierung 5
M Plugin JUnit Test Plattformprogrammierung 4
F RCP und JMF PlugIn Registrierung Plattformprogrammierung 6
R Plugin-Lokalisierung für Ganymede Plattformprogrammierung 12
G Plugin Export Plattformprogrammierung 4
V Javadoc an Eclipse Plugin anfügen Plattformprogrammierung 4
V JNI in Eclipse Plugin Plattformprogrammierung 17
F Eclipse plugin ausserhalb von Eclipse starten Plattformprogrammierung 4
S RCP mit canvas plugin ! Plattformprogrammierung 2
byte [ Eclipse ] NoClassDefFoundError bei neuem Plugin Plattformprogrammierung 4
rgubler Plugin mit eigenem ClassLoader Plattformprogrammierung 2
G neues project -> Plug-in project. Wie plugin starten? Plattformprogrammierung 6
G subMenue per PlugIn.xml Plattformprogrammierung 3
Linad RCP - Plugin mit Fragment Plattformprogrammierung 2
A Plugin konzepte: OSGI oder JPF? Plattformprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben