ich eine Bibliothek geschrieben habe ich geschrieben habe, das habe ich dann eine Anwendung geschriebenMaven eine alte Version einer transitiven Abhängigkeit ziehen
auf Guava Version 20.0 (mit JDK 1.7 kompatibel ist die letzte Version, die) abhängt das verwendet diese Bibliothek und auch uk.org.lidalia: slf4j-test: 1.2.0 (mit Testumfang). slf4j-test hat eine Abhängigkeit von Guava Version 14.0.1.
Mein Problem ist, dass meine Anwendung zwei verschiedene Versionen von Guava als transitive Abhängigkeiten sieht und die ältere Version auswählt. Wenn ich nun bestimmte Methoden in meiner Bibliothek anrufe, bekomme ich Klassen- oder Methoden-Ausnahmen.
Ich kann (und habe) Guava als eine Abhängigkeit von slf4j-test ausgeschlossen, die das Problem für jetzt behebt, aber das Problem wird zurückkehren, wenn ich eine andere Abhängigkeit einführe, die Guava verwendet.
Also meine Frage ist: Warum sollte Maven die ältere Version einer Abhängigkeit auswählen und wie ich immer die neuesten Versionen auswählen.
https://cwiki.apache.org/confluence/display/MAVENOLD/Dependency+Mediation+and+Conflict+Resolution#DependencyMediationandConflictResolution-DependencyVersionRanges –
Sie einfach Guva als direkte Abhängigkeit von der Anwendung definieren sollten .. – khmarbaise