web-dev-qa-db-fra.com

Comment résoudre la dépendance cyclique dans Maven?

Comment résoudre une dépendance cyclique Maven?

Supposons que A est le projet parent et B et C sont des projets enfants. Si B dépend de C et C dépend de B, existe-t-il un moyen de résoudre la dépendance cyclique autre que d'avoir un projet différent.

40
user2367460

Maven n'autorise pas les dépendances cycliques entre les projets, car sinon, il n'est pas clair quel projet créer en premier. Vous devez donc vous débarrasser de ce cycle. Une solution est celle que vous avez déjà mentionnée, pour créer un autre projet. Un autre serait de simplement déplacer certaines classes de B vers C ou vice versa lorsque cela aide. Ou parfois, il est correct de fusionner les projets B et C en un seul projet s'il n'est pas nécessaire d'en avoir deux.

Mais sans savoir et analyser pourquoi vos projets dépendent les uns des autres, il est un peu difficile de suggérer la meilleure solution.

Je suggère donc que vous puissiez utiliser des outils comme JDepend ou l'outil d'analyse InteliJ pour trouver vos classes problématiques et en fonction de celles-ci trouver une meilleure conception pour votre logiciel.

La plupart du temps, je crée quelque chose comme un module d'interface et un module d'implémentation, qui se débarrasse de la plupart des cycles.

34
mszalbach

La création d'un nouveau projet est en effet une solution.

L'inversion de dépendance est la deuxième solution possible.

Reportez-vous à ici pour le principe de dépendance acyclique.

Et ici pour le principe d'inversion de dépendance.

8
Dormouse