2010-10-27 3 views
2

QuestionEclipse point d'extension pour la mise à jour du Classpath

Compte tenu d'un conteneur Classpath J'ai écrit en tant que plugin/extension, comment puis-je ajouter au classpath, automatiquement?

Contexte

Ok, donc je suis un développeur Java expérimenté, mais très nouveau pour écrire Eclipse Plugins. J'ai été googling, suivre des tutoriels et lire le code source d'autres plugins pour quelques jours. Je sais exactement ce que je veux faire mais pas exactement comment le faire.

En ce moment, dans Eclipse, lorsque je clique sur une ressource et choisissez "Exécuter en tant test JUnit" comme dans:


for some reason, my pics don't work anymore. I'll fix this soon...


Dans les coulisses, la Le plugin m2eclipse génère en quelque sorte une configuration d'exécution qui contient le conteneur de chemin de classe "Maven Dependencies", comme suit:

alt text

Ma meilleure estimation est que le conteneur classpath "Maven Dependencies" est ajoutée par un point d'extension utilisé par le plug-in m2eclipse. De même, je souhaite ajouter automatiquement mon conteneur classpath chaque fois qu'un utilisateur exécute un test JUnit. Il apparaît donc sous "Entrées utilisateur". Quel (s) point (s) d'extension puis-je utiliser pour faire quelque chose de ce genre? J'ai regardé org.eclipse.jdt.core.classpathContainerInitializer mais je ne suis pas sûr que ça va faire ce dont j'ai besoin.


Résultat Idéal

Idéalement, je voudrais écrire un plugin qui prend chaque entrée dans le chemin de la construction du projet et ajoute à la classpath d'une configuration d'exécution (chaque fois qu'une nouvelle configuration de lancement est créé via: Exécuter en tant que> JUnit test). Cela devrait être le comportement par défaut d'Eclipse mais ce n'est pas le cas!

Ma prochaine solution serait d'ajouter automatiquement mon conteneur classpath personnalisé au chemin de compilation de la configuration d'exécution, automatiquement. À la fin de la journée, je veux juste un chemin de classe pour tout code java que notre équipe lance/lance. Cela ne devrait pas être si difficile!

Tout conseil sur la façon d'obtenir tout cela serait apprécié! Même des pointeurs basiques sur où chercher pour comprendre comment certains points d'extension sont destinés à être utilisés (les API JavaDocs de base sont terribles). Merci,

  • gMale
+0

Vous pouvez utiliser Alt + Maj + F1 pour ouvrir Spy Plug-in et obtenir des détails sur le plugin M2Eclipse, puis regarder dans la source. – porcoesphino

Répondre

1

La deuxième partie, comme vous l'admettez, est comment l'ajouter automatiquement.

Je vous recommande d'utiliser un point d'extension appelé org.eclipse.ui.startup. Cela vous permet de contribuer le plus tôt possible au démarrage d'Eclipse. À chaque démarrage, vous pouvez parcourir tous les projets et voir si des projets existants nécessitent le conteneur classpath que vous avez créé.

+0

merci. C'est plus dans le sens de ce que je cherche. Il doit y avoir un autre point d'extension pour le code de contribution qui s'exécute juste avant l'exécution d'une configuration d'exécution. À la fin de la journée, tout ce que je veux, c'est un conteneur classpath qui 1) ajoute tous les jars dans le répertoire Lib au chemin de compilation 2) est inclus par défaut dans toutes les configurations d'exécution. Cela devrait être intégré dans Eclipse par défaut! – gMale

+0

Non, il n'y a pas de point d'extension pour faire ce que vous suggérez. La chose la plus proche à faire serait de créer votre propre configuration de lancement. Il peut s'agir d'une sous-classe/copie directe du lancement de JUnit, mais cela ajouterait également vos bibliothèques supplémentaires. –

+0

J'ai finalement résolu mon problème racine il y a quelques semaines en plaçant mes jars sous chemin/vers/project/WebContent/WEB-INF/libs. Cela a fonctionné parfaitement puisque les jars de ce répertoire sont automatiquement inclus dans le conteneur de chemin de classes * Web Apps Libraries * dans toutes les configurations d'exécution. Je vais accepter cela puisque votre réponse est la plus proche de la résolution de ma question ci-dessus (c'est-à-dire, je pense que cela fonctionnerait réellement). – gMale

0

L'article à http://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-classpath/index.html fournit une description et une source exellent pour un plug-in qui définit un conteneur classpath spécifique du projet qui inclut tous les fichiers jar dans un répertoire spécifié. Roostergx fournit une partie de la réponse (c.-à-d. Comment créer le conteneur de chemin de classes).

+0

Merci pour le lien. Je n'ai pas regardé ce problème dans un moment ... Créer le conteneur est faisable ... mais ne pas avoir à l'ajouter ** à la main ** à une configuration d'exécution (c'est-à-dire automatiquement inclus chaque fois que quelqu'un clique * Exécuter comme> JUnit test *) est la partie difficile. Le conteneur * Maven Dependencies * fonctionne de cette façon ... donc cela doit être possible, n'est-ce pas? – gMale

Questions connexes