Der Unterschied zwischen den beiden lässt sich am besten an einer scheinbar notwendigen und ausreichenden Definition des in den Maven-Website-Dokumenten verfügbaren dependencyManagement-Elements erkennen:
dependencyManagement
"Standardabhängigkeitsinformationen für Projekte, die von diesem erben. Die Abhängigkeiten in diesem Abschnitt werden nicht sofort aufgelöst. Wenn stattdessen ein von diesem abgeleiteter POM eine Abhängigkeit deklariert, die durch eine übereinstimmende Gruppen-ID und Artefakt-ID beschrieben wird, werden die Version und andere Werte aus diesem Abschnitt werden für diese Abhängigkeit verwendet, wenn sie nicht bereits angegeben wurden. " [ https://maven.apache.org/ref/3.6.1/maven-model/maven.html ]
Es sollte zusammen mit einigen weiteren Informationen auf einer anderen Seite gelesen werden:
„..Der minimale Satz von Informationen zum Abgleichen einer Abhängigkeitsreferenz mit einem dependencyManagement-Abschnitt ist tatsächlich {groupId, artefaktId, type, classifier}. In vielen Fällen beziehen sich diese Abhängigkeiten auf JAR-Artefakte ohne Klassifizierer. Auf diese Weise können wir die auf {groupId, artefaktId} festgelegte Identität kurz fassen, da der Standardwert für das Typfeld jar und der Standardklassifizierer null ist. “ [ https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html ]
Somit sind alle Unterelemente (Bereich, Ausschlüsse usw.) eines Abhängigkeitselements - außer groupId, artefaktId, Typ, Klassifizierer, nicht nur Version - zum Zeitpunkt der Sperrung / Standardeinstellung verfügbar (und werden somit von geerbt) dort weiter) geben Sie die Abhängigkeit innerhalb eines dependencyElement an. Wenn Sie eine Abhängigkeit mit den Unterelementen type und classifier (siehe die zuerst zitierte Webseite, um alle Unterelemente zu überprüfen) als nicht jar bzw. nicht null angegeben haben, benötigen Sie {groupId, artefaktId, classifier, type} Verweisen (Auflösen) dieser Abhängigkeit an einem beliebigen Punkt in einer Vererbung, die vom dependencyManagement-Element stammt. Andernfalls würde {groupId, artefaktId} ausreichen, wenn Sie nicht beabsichtigen, die Standardeinstellungen für Klassifizierer und Typ (jar bzw. null) zu überschreiben. Standard ist also ein gutes Schlüsselwort in dieser Definition. beliebige Unterelemente (außer groupId,
Daher wird jedes Abhängigkeitselement außerhalb von dependencyManagement, sei es als Verweis auf ein dependencyManagement-Element oder als eigenständiges Element, sofort aufgelöst (dh im lokalen Repository installiert und für Klassenpfade verfügbar).