Angenommen, ich habe ein komplexes Projekt mit vielen Abhängigkeiten. Die Versionen der Abhängigkeiten werden von vielen Import-Scope-Poms verwaltet. Mein Projekt hängt vom Artefakt group:artifact
ab, das eine Abhängigkeit vom Artefakt group:transitive-dependency
hat. Wenn ich dependency:tree
ausführe, sehe ich etwas wie folgt:
Das Problem ist group:artifact:1.3
erfordert group:transitive-dependency
Version 1.3 oder höher. Sicher, einer der Importpoms erzwingt die falsche Version. Aber gibt es eine Möglichkeit zu wissen, welcher man ist, außer dass man alle durchsucht?
Sie sollten das maven-enforcer-plugin ausprobieren und es für DependencyConvergence konfigurieren, z. B.
%Vor%Das zeigt Ihnen, welche Top-Level-Abhängigkeiten unterschiedliche Versionen anderer Abhängigkeiten in ihren Abhängigkeitsstrukturen haben. Sie unterdrücken dann die Abhängigkeitsvarianten, für die Sie keine Ausschlüsse verwenden möchten.
Dies tritt auf, wenn zwei oder mehr Eltern-Poms mit demselben Artefakt in Konflikt stehen.
Für zB
[INFO] | \- com.rbs.gbm.risk:framework-core:jar:1.6.6:compile
%Code%
[INFO] | +- com.rbos.gbm.risk:log4jextensions:jar:2.3:compile (version managed from 2.2)
In meinem Fall hat Framework-Core log4jextenstions 2.2 erwähnt. und mein Super Pom sagt log4jextentsions 2.3. Irgendwie hat der Framework-Core überzeugt, log4jextensions 2.2 zu verwenden.
Später, wenn ich Framework-Core-Pom zu 2.3 aktualisieren,
[INFO] | +- oro:oro:jar:2.0.8:compile
%Code%
[INFO] | \- com.rbs.gbm.risk:framework-core:jar:1.6.6:compile
Tags und Links dependencies maven pom.xml