92 Stimmen

Maven-Abhängigkeitsauflösung (konfliktbehaftet)

Nehmen wir an, ich habe vier Projekte:

  • Projekt A (hat eine Abhängigkeit von B und D)
  • Projekt B (hat eine Abhängigkeit von D)
  • Projekt C (hat eine Abhängigkeit von D)
  • Projekt D

In diesem Szenario, wenn ich Projekt A ausführe, wird Maven die Abhängigkeit zu D korrekt auflösen. Wenn ich das richtig verstehe, nimmt Maven immer die Abhängigkeit mit dem kürzesten Pfad. Da D eine direkte Abhängigkeit von A ist, wird es verwendet und nicht das D, welches in B angegeben ist.

Aber nun nehmen wir diese Struktur an:

  • Projekt A (hat eine Abhängigkeit von B und C)
  • Projekt B (hat eine Abhängigkeit von D)
  • Projekt C (hat eine Abhängigkeit von D)
  • Projekt D

In diesem Fall haben die Wege zur Lösung von D die gleiche Tiefe. Was passiert ist, dass Maven einen Konflikt haben wird. Ich weiß, dass es möglich ist, Maven zu sagen, dass es Abhängigkeiten ausschließen soll. Aber meine Frage ist, wie man diese Art von Problemen lösen kann. Ich meine, in einer realen Anwendung hat man eine Menge Abhängigkeiten und möglicherweise auch eine Menge Konflikte.

Ist es wirklich die beste Lösung, Dinge auszuschließen, oder gibt es andere mögliche Lösungen für dieses Problem? Ich finde es sehr schwierig, damit umzugehen, wenn ich plötzlich eine ClassNotFound Exception bekomme, weil sich einige Versionen geändert haben, was Maven dazu veranlasst hat, eine andere Abhängigkeit zu nehmen. Wenn man diese Tatsache kennt, ist es natürlich etwas einfacher zu erraten, dass das Problem ein Abhängigkeitskonflikt ist.

Ich verwende Maven 2.1-SNAPSHOT.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X