Wenn alle untergeordneten Elemente die gleiche Abhängigkeit angeben, empfiehlt es sich, diese Abhängigkeit stattdessen im übergeordneten Element anzugeben. Sie haben damit recht, dass alle Projekte konsistente Versionen von Abhängigkeiten verwenden.
Warum entschieden die Maven-Entwickler, Abhängigkeiten in untergeordneten Projekten zu deklarieren, wenn dies die Verwendung verschiedener Versionen der gleichen Abhängigkeit ermöglicht? Ich denke, sie dachten, der Vorteil von lokal deklarierten Abhängigkeiten in Projekten wäre, wenn sie sich von Geschwisterprojekten unterscheiden, schöner, als die Eltern zu beschränken, alle Abhängigkeiten für alle ihre untergeordneten Elemente zu deklarieren.
Denken Sie daran wie Variablen in verschiedenen Bereichen in einer Klasse deklariert. Wenn Sie eine private Variable in einer Methode haben, wissen Sie, dass sie nur in der einen Methode verwendet wird und Sie sie nach Belieben ändern können, ohne sich um die gesamte Codebasis kümmern zu müssen. Wenn Sie ein privates Feld in einer Klasse haben, müssen Sie alle Benutzungen in dieser Klasse beachten, aber nicht in anderen Dateien. Wenn Sie eine öffentliche Variable haben, haben Sie die Idee. Abhängigkeiten sind die gleichen, wenn Sie eine für ein einzelnes Projekt deklariert haben, können Sie sicher sein, dass sie nur für das einzelne Projekt benötigt wird. Darüber hinaus muss es nicht vorhanden sein, wenn Sie ein anderes untergeordnetes Projekt desselben Elternteils erstellen.
Sie haben recht, wenn Sie verschiedene Versionen der gleichen Abhängigkeit in verschiedenen untergeordneten Projekten verwenden, werden Sie wahrscheinlich mit dem endgültigen Artefakt betrübt. Seien Sie sich bewusst, dass es andere Projekttypen und Build-Zyklen gibt, bei denen gemischte Versionsnummern zwischen Projekten kein Problem darstellen und tatsächlich erwünscht sind.
Denken Sie daran, dass Maven Eltern Pom-Dateien auch Eltern haben können. Dies ermöglicht mehr Ebenen einer Hierarchie als nur zwei Ebenen. Ich denke, es wäre lächerlich, wenn alle untergeordneten Projekte ihre Abhängigkeiten in der übergeordneten Pom-Datei des übergeordneten Projekts deklarieren müssten.
Es wird nett sein, wenn diese Anordnung eine Standardpraxis ist, wobei das Elternpom eine vollständige Definition der Abhängigkeit hat (dh die Versionsnummer enthält) und das Unterprojekt lediglich die Abhängigkeit "auflistet" und es dem Eltern ermöglicht, die Version zu diktieren . – rk2010
Ich stimme zu, es wäre schön, wenn diese Praxis mehr gefördert würde, aber ich denke, es wäre zu viel zu sagen, es sollte durchgesetzt werden. Maven bietet oft viele verschiedene Möglichkeiten, etwas zu erreichen. Ich denke, ein Build zeigt Warnungen an, wenn mehrere Projekte auf verschiedene Versionen der gleichen Abhängigkeit verweisen, so dass es in Ihrem Gesicht liegt, wenn Sie etwas tun, das möglicherweise schlecht ist. –