2016-07-14 4 views
0

Angenommen, ich definiere die Version einiger Artefakte in meinem dependencyManagement-Abschnitt.Wann genau hat dependencyManagement Vorrang vor Versionen in Abhängigkeitsdefinitionen?

Ist es richtig, dass diese Versionsdefinition alle Versionsdefinitionen in transitiven Abhängigkeiten überschreibt?

Oder löst es nur Versionskonflikte?

Also, wenn ich foo in der Version 2.0.0 in meine dependencyManagement und einige transitive Abhängigkeit hat foo in der Version 1.0.0, bekomme ich immer 2.0.0?

Antwort

0

Das ist, wie es mit Maven 2 funktionieren würde. Und im Allgemeinen ist das die Grundregel: Was auch immer Ihr Projekt spezifiziert, hat Vorrang vor dem, was Ihre Abhängigkeiten angeben.

Doch nach Maven 3.x Compatibility Notes wurde dieser Prozess in Maven geändert 3. es Aether Jetzt verwendet und sollte intelligenter sein und möglicherweise sogar semantische Versionierung berücksichtigen, selbst wenn version ranges nicht verwendet werden. Meiner Meinung nach ist die Dokumentation verteilt und nicht sehr klar. Ich denke, der Hauptunterschied besteht darin, wie Konflikte zwischen zwei Abhängigkeiten gelöst werden, nicht zwischen Ihrem Projekt und der Abhängigkeit. Die erste Regel sollte also immer noch gelten.

Verwandte Themen