2010-05-17 7 views
3

Dans Eclipse, il est possible de créer des configurations de lancement dans un projet, en spécifiant les dépendances d'exécution d'un autre projet. Un problème que j'ai trouvé était que si vous avez un espace de travail de projet multiple, étant possible que chaque projet possède ses propres bibliothèques, il est facile d'ajouter des dépendances explicites dans un projet secondaire à des bibliothèques d'un autre projet et donc sujettes à changement.Comment supprimer les dépendances explicites aux bibliothèques d'autres projets dans les configurations de lancement Eclipse?

Un exemple de ce problème suit:

proj1 
    +-- src 
    +-- lib 
      +-- jar1-v1.0.jar 
      +-- jar2-v1.0.jar 
proj2 
    +-- src 
    +-- proj2-tests.launch

Je n'ai pas une dépendance du code dans proj2/src aux bibliothèques proj1/lib. Néanmoins, j'ai une dépendance de proj2/src à proj1/src, bien qu'il y ait une dépendance interne dans le code dans proj1/src à ses bibliothèques jar1-v1.0.jar et jar2.v1.0.jar, je avoir à ajouter une dépendance dans proj2-tests.launch aux bibliothèques dans proj1/lib. Cela se traduit par les lignes laides suivantes proj2-tests.launch:

<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<runtimeClasspathEntry path="3" projectName="proj1" type="1"/>
"/> 
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<runtimeClasspathEntry internalArchive="/proj1/lib/jar1-v1.0.jar" path="3" type="2"/>
"/> 
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<runtimeClasspathEntry internalArchive="/proj1/lib/jar2-v1.0.jar" path="3" type="2"/>
"/>

Ce ne serait pas un gros problème s'il n'y avait pas besoin de temps en temps pour faire évoluer le logiciel, mise à niveau des bibliothèques et etc. Considérez le besoin commun de mettre à niveau les bibliothèques jar1-v1.0.jar et jar2-v1.0.jar vers leurs versions v1.1. Considérons que vous avez environ 10 projets dans un espace de travail, ayant environ 5 bibliothèques chacune et environ 4 configurations de lancement. Vous obtenez un surcoût de maintenance en effectuant une mise à niveau simple d'une bibliothèque, ce qui implique normalement des modifications dans les fichiers dont vous n'avez pas besoin. Ou peut-être que je fais quelque chose de mal ...

Ce que je voudrais dire, c'est que proj2 dépend de proj1 et de ses bibliothèques et que cela se traduit simplement dans les fichiers * .launch. Est-ce possible?

Répondre

2

Si je ne me trompe pas, si vous ajoutez project1 sur le chemin de la construction de projet2, le lanceur pour Projet2 comprendra le droit classpath, même si les dépendances du changement project1:

alt text http://img24.imageshack.us/img24/9511/eclipsebuildpath.png

(propriétés de projet2, Java Build Path, onglet "Projets")

+0

Merci pour la réponse. Cela fournirait probablement l'automatisation requise. Malheureusement, je ne peux pas le faire dans mon cas car nous utilisons les dépendances Eclipse PDE pour configurer les versions Eclipse. Ma question a été posée dans le cas spécifique du projet ArgoUML et nous avons ArgoUML et ArgoEclipse. ArgoEclipse utilise les fichiers Eclipse RCP tels que META-INF/MANIFEST.MF et les amis. Dans "ArgoUML seulement", nous les utilisons uniquement pour la construction Eclipse. Donc, même si votre solution est probablement bonne pour ma réponse simple affichée ci-dessus, il ne sera pas coupé pour le problème spécifique que j'ai. Dois-je créer une nouvelle question? – euluis

+0

@euluis: Je recommanderais une nouvelle question avec ces détails spécifiques (avec quelques captures d'écran et un titre plus spécifique), alors que vous pouvez fermer cette question (en acceptant la réponse ou en publiant une réponse de votre choix) – VonC

+0

Accepté. Je construis un exemple simplifié de mon problème pour placer une nouvelle question plus spécifique. Merci. – euluis

Questions connexes