Dans mon application, j'utilise une bibliothèque externe (Batik 1.7) composée de plusieurs modules. Les modules ont plusieurs dépendances cycliques entre eux. Cela n'influence pas la construction, mais certains outils (par exemple, le graphique de dépendance m2eclipse ou le rapport sur les dépendances) ne fonctionneront plus. P>
Y a-t-il un bon moyen de diagnostiquer quels cycles sont là et un moyen facile de se débarrasser d'eux? P>
Je pense que je peux résoudre cela en excluant certaines des dépendances manuellement, mais je ne sais pas quoi exclure. Ce que j'aimerais avoir est un aperçu clair des cycles du graphique. P> Batik-Bridge < / code>
dépend de batik-gvt code>
, qui est à son tour dépend de Batik-Bridge code>. P>
3 Réponses :
Je ne suis pas sûr que cela soit associé à Maven (vous ne pouvez pas avoir de dépendances cycliques entre les modules avec Maven), mais peut-être que je n'ai pas eu quelque chose. Cela dit, vous pouvez utiliser JDePend pour analyser un code et trouver des dépendances cycliques (voir < Un href = "http://clarkware.com/software/jdepend.html#cycles" rel = "nofollow Noreferrer"> interprétation de cycles de dépendance ). Si vous préférez utiliser JDepend de Eclipse, il existe le JDePend4eclipse plugin. P>
Découvrez Batik de son référentiel de subversion , exécutez JDEPEND sur ses sources et voir si vous trouvez quelque chose (je suppose que vous allez). Mais, pour être honnête, c'était la partie facile. Se débarrasser des dépendances cycliques est une autre histoire et pourrait ne pas être aussi facile. Cela pourrait impliquer des tâches telles que les classes de déplacement d'un colis à un autre, reconditionner les modules, comprendre comment les travaux de construction de Batik (notez que son script de construction de fourmis dispose de 2220 lignes), etc. En d'autres termes, cela nécessitera un travail acharné sur une bibliothèque que vous Initialement vouloir simplement utiliser (et si vous ne contribuez que ces modifications, vous devrez peut-être les appliquer à nouveau avec une version ultérieure). Mon conseil: réfléchissez-y deux fois avant de commencer à creuser dans cette direction. P>
Juste pour vos informations, il y a aussi un jdepend-maven-plugin Ce qui n'est utile que si vous souhaitez exécuter JDepend sur votre projet (c'est-à-dire votre code) qui n'est pas votre demande. P>
Essayez d'exécuter ceci à partir de la ligne de commande à la racine de votre projet le plus haut:
Essayez d'utiliser ucdetector Cela aide à trouver des cycles de dépendances en niveau de classe tout en développant. Un autre outil utile est Tattletale . P>
Cela vous fournit des rapports qui peuvent vous aider p>
J'ai intentionnellement parcouru des solutions mavennes pour ne pas doubler d'autres réponses. P>
Si vous pouvez fournir un POM problématique, je suis sûr que M2eclipse et Maven Devs fourniront un correctif.
@Robert IMO, le problème est dans les pots de Batik, pas dans une POM.
Je vais essayer d'essayer - peut-être qu'ils peuvent fournir de meilleurs rapports d'erreur. Pour M2eclipse maintenant, vous devez examiner le journal des erreurs Eclipse pour savoir pourquoi cela ne fait rien. Et le plugin de dépendance continue de suspendre pendant des heures.