2009-04-20 7 views
1

J'ai actuellement un plugin existant, qui référence une classe à partir d'un plugin requis. J'ai remplacé ce code par une référence à une classe qui fait partie de mon fragment.Comment ajouter mon fragment à la liste des plugins requis sur un plugin existant

Je suis confrontée à deux problèmes. Si j'importe mon fragment en tant que fichier jar, je ne peux pas voir les modifications que j'ai effectuées lorsque le plugin s'exécute en tant qu'application Eclipse

Pour résoudre ce problème, je lierais une source supplémentaire (de fragment) au projet de plugin existant. Cependant, le lien utilise un chemin absolu et le rend inapte au déploiement.

Je veux être capable d'emballer le plugin avec la modification du code et être capable de "dépendre" de mon fragment de code. Est-ce que je peux ajouter mon fragment en tant que dépendance?

Par exemple:

Plugin Project I am changing : org.eclipse.*.editor 
it depends on org.eclipse.*.edit 

I have a fragment mydomain.*.edit which has org.eclipse.*.edit as host plugin 

I want org.eclipse.*.editor to pick up mydomain.*.edit 
instead of org.eclipse.*.edit 

ps: J'ai aussi essayé emballer le fichier jar pour le mondomaine * modifier dans le répertoire plugins et essayer de le ramasser à partir de là, il ne montre pas sur la.. liste lorsque je clique sur ajouter les plugins requis sur l'onglet dépendance du fichier plugin.xml de l'org.eclipse. *. éditeur

Veuillez me faire savoir si je ne suis pas assez clair, je vais essayer de le reformuler.

Merci d'avance!

Répondre

2

Si je comprends bien ce que vous voulez faire, je ne pense pas que ce soit possible. Vous devrez essayer d'une autre manière.

Les plugins ont des dépendances avec d'autres plugins. Les fragments n'existent pas en tant qu'entités d'exécution séparées, mais seulement en tant qu'extensions d'un plugin. Donc, votre plugin ne peut se référer qu'au plugin 'editor'.

Les classes fournies par un fragment ne peuvent pas (et ne doivent pas) être accédées directement. Ils peuvent être retournés par le plugin d'origine (A) s'ils implémentent une extension exécutable fournie par le plugin A.

Si vous faites référence au code du fragment d'un autre plugin (B), les classes seront chargées par le classloader du plugin B et être différent de ceux qui sont chargés par le plugin A.

Quel est le but de votre fragment? Voulez-vous accéder au code interne du plugin A? Voulez-vous étendre un éditeur d'éclipse? Si vous voulez étendre les fonctionnalités que le plugin d'origine n'expose pas comme extensibles, je pense que le seul moyen est d'écrire un plugin, d'étendre la classe d'éditeur du plugin original, de l'enregistrer à côté de l'original et de l'utiliser à la place .

[Modifier] Peut-être que ce lien vous expliquera mieux: Eclipse FAQ

Hope this helps, Vlad

0

Merci Vlad, Votre explication a été très utile. Contrairement à l'architecture basée sur l'extension qui est vraiment destinée aux fragments, j'ai dû modifier un certain composant dans l'éditeur qui n'était pas exposé dans le cadre de l'extension. Cette modification faisait référence à un projet externe que j'avais créé en tant que fragment, mais qui aurait pu être un projet java normal contenant un fichier jar que je pouvais placer dans le classpath de l'éditeur.J'ai pu résoudre les problèmes de dépendance en plaçant le fichier jar dans le chemin de la classe, cependant lorsque j'exporte les plugins et plugins associés en fichiers jar et les place dans le répertoire dropin, il ne s'installe pas correctement. (Ne pas placer les fichiers jar dans le répertoire plugins)

L'éditeur d'éclipse que j'essaie de modifier utilise le projet EMF. J'ai gardé le projet EMF dans l'espace de travail pour résoudre les dépendances de l'éditeur. Toutefois, lorsque je remplace les fichiers JAR EMF fournis avec eclipse par ceux de l'espace de travail, les fichiers que je veux modifier ne sont pas reconnus correctement.

Existe-t-il une autre façon de procéder?

Questions connexes