Dois-je utiliser des plug-ins Eclipse (ou OSGi Bundles) comme outil de gestion de la dépendance plaine?

StackOverflow https://stackoverflow.com/questions/1390571

Question

encore une fois, il est arrivé ... je me suis joint un nouveau projet, composé de plusieurs projets Java Eclipse simples, avec des interdépendances, tous gérés par le chemin de la construction du projet. Je trouve tout cela un peu de chaos. Et quand il s'agit d'exécuter des configurations -. Vous suffit d'entrer l'enfer

Dans le passé, j'ai collé pour créer des projets de plug-in, au lieu des projets Java simples - même si je ne l'intention d'exécuter ces projets comme OSGi faisceaux. Je trouve que les dépendances sont beaucoup plus faciles à gérer dans des projets de plug-in. D'autres personnes prenant le même chemin? Rien contre cette approche?

Était-ce utile?

La solution

Si vous lisez le restructuration du document de org.aspectj , ce projet a précisément:

  
      
  • Toutes les dépendances seraient exprimées dans OSGi bundle fichiers manifestes, qui spécifient un classpath (pour les pots de bibliothèque) et « nécessaires » faisceaux.
      Les bibliothèques attendues ou espérées dans l'environnement de déploiement (par exemple, XML ou JRocket) doivent être inclus à des fins de construction et d'essais, mais exclus du produit d'expédition. Celles-ci pourraient être spécifiés comme « option » faisceaux nécessaires ou-packages nécessaires

  •   
  • assemblage binaire initial travaillerait à travers l'ensemble du faisceau d'habitude, avec la sortie du faisceau, y compris les fichiers binaires à partir de fragments faisceau dont il a besoin (mais pas de faisceaux en option)

  •   

Les avantages comprennent aussi l'aspect Version de OSGi, qui permet de spécifier la version attendue minimum et maximum d'une dépendance.

Autres conseils

Je suis d'accord que dans Eclipse il est plus facile de gérer les dépendances du projet en utilisant OSGi que la manière traditionnelle d'ajouter un projet ou des références de bibliothèque.

Toutefois, si vous faites la promotion du OSGi sens de la gestion de la dépendance au moment du développement, les développeurs ont besoin d'apprendre OSGi et il y aura un coût à mesure qu'ils les problèmes de visibilité de la classe.

Utilisez-vous Require-Bundle ou Import-Package pour gérer les dépendances? Même si Require-Bundle n'est pas le choix recommandé avec OSGi, il est peut-être un meilleur ajustement du point de vue de la gestion de la dépendance en temps de développement.

Sauf si vous utilisez quelque chose comme le plug-in Maven, Eclipse a la scission ennuyeux des méthodes complètement différentes de compilation / courant à l'intérieur et à l'extérieur Eclipse -. Avec la douleur de maintien 2 Compile parallèle / systèmes gérés

Je pense que votre méthodologie, d'utiliser OSGi pour la gestion de la dépendance même si vous ne serez pas en cours d'exécution dans un conteneur OSGi, est très solide, car, finalement, cela conduira à un code plus modulaire. Code modulaire est plus facile à factoriser et plus facile à répartir entre plusieurs développeurs. Vous ne même pas besoin d'étendre toutes les classes d'OSGi, de sorte que vous ne créez pas de dépendances supplémentaires.

D'autre part, la suggestion de Ken Liu d'utiliser une gestion de la dépendance extérieure présente des avantages de trop, car quelque chose comme Maven va gérer beaucoup de la dépendance et de la gestion pour vous.

Combiner les deux, et vous obtenez le meilleur des deux mondes. OSGi peut être fait pour travailler avec Maven en utilisant des bibliothèques supplémentaires telles que Bnd et m2eclipse .

On dirait une approche intéressante, mais personnellement, je pense qu'il est préférable de gérer les dépendances de construction à l'aide d'un outil de construction externe comme Ant ou Maven plutôt que de lier votre construction à un IDE. Si vous utilisez Maven et le plug-in m2eclipse, il établira automatiquement les dépendances de projet Eclipse lors du chargement du POM Maven si ces autres projets sont également dans votre espace de travail.

Malheureusement, si votre équipe utilise actuellement la gestion des dépendances ad hoc, il est un peu peu probable qu'ils voudront faire l'effort de sauter à Maven. Là encore, peut-être qu'ils ont besoin d'un chef de file pour diriger l'effort.

Je ne voudrais pas utiliser des projets de plug-ins personnellement, je voudrais utiliser construire des outils tels que Ant, Maven et d'autres.

S'il n'y a pas de système de construction intégré, cela signifie que l'entreprise ne comprend pas beaucoup sur le développement de logiciels.

Je ne prendrais pas toute la responsabilité d'introduire un système de construction, peut-être extra-heures. Si elles ne veulent pas migrer, je vous suggère de commencer à chercher un autre emploi dès que possible.

Il y a deux questions distinctes ici.

  1. Comment puis-je configurer plusieurs projets et
  2. Ce qui me permet de construire le système de construire plusieurs projets

Les deux ne doivent pas nécessairement être liés. Ainsi, par exemple, vous pouvez choisir Maven pour construire les projets, mais utiliser des projets plug-ins pour permettre le montage plus facile. La plupart des choses ont battu la construction du système Eclipse mains vers le bas; une fois qu'il se travaille, il est assez stable - mais l'obtenir à partir de rien à travail implique (a) la chance, et / ou (b) la magie noire.

En fin de compte, la question revient alors à laquelle vous vous sentez gérer plus facile; les deux types de dépendance, ou juste un seul. Si vous voulez un seul, alors vous devez investir le temps dans les deux quelque chose comme m2eclipse (qui génère des dépendances de projet à partir du POM Maven) ou en utilisant pax-construction (qui peut générer le manifeste du maven POM). Soit ça, ou vivre avec deux systèmes de gestion de la dépendance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top