Maven Abhängigkeits-Konflikt
Einem maven-Projekt, bestehend aus einigen Modulen. Eines meiner module ist mit Guave Abhängigkeit von google-version 11.0.2
. Jetzt bin ich die Integration weiterer module in meinem Projekt auch mit Guave aber version 14
.
So, ich will das neue Modul verwendet Guave version 14
aber noch Projekt verwenden Guave version 11.0.2
. Ich habe versucht, indem <exclusion></exclusion>
von Guave dem neuen Modul, aber es hat nicht funktioniert.
Irgendwelche Tipps um dieses Problem zu lösen.
Update: @Guillaume Darmont, die Antwort löst das problem der verschiedenen Module. aber jetzt mein problem ist, die neuen Module hat 2 Abhängigkeit einer von Ihnen ist mit Guave 11.0.2
und der andere ist mit 14.0
. wie dies zu bewerkstelligen. können wir angeben, separat in der pom des Moduls, welche version der Guave es benutzen soll.?
- Ich habe nicht ganz verstanden deine Frage. Sie versuchen, zu verwenden Guave
14
auf beiden Modulen ? Auch, verwenden Sie einen gemeinsamen parent-POM ? - ich will Guave 14 auf das neue Modul, was ich bin zu integrieren. Ältere Module werden mit Guave 11.0.2 nur. Und ja, ich habe ein commmon parent-POM.
- Sind Sie sicher, dass beide 11.0.2 und 14 nebeneinander bestehen können? Unter normalen Umständen, nur eine der Bibliotheken (die erste im classpath) verwendet werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als ich Ihre Frage zu verstehen, können Sie eine
<dependencyManagement>
fürguava
im neuen Moduls pom.xml :11.0.2
und14.0
. wie dies zu bewerkstelligen.mvn dependency:tree
Befehl wird helfen, zu bestimmen, welches Modul bringt die Guave 14 jar-Datei.mvn dependency:tree -Dverbose -Dincludes=com.google.guava
zeigt nur, die Teile, die Abhängigkeitsstruktur, die Sie interessiert sind, und enthalten details darüber, warum eine Abhängigkeit weggelassen wurde (conflict/duplicate) in jedem Fall. Apache-Maven - Projekt- Konflikte Lösen mit Hilfe der dependency treeErstens versuchen
mvn dependency tree
und überprüfen Sie die Ausgabe es ist möglich, dass11.0.2
wurde transitiv verwiesen wird, die von mehr als einem Ihrer Projekte, Abhängigkeiten und man wird hinzufügen müssen, um Ausgrenzung, um alle Abhängigkeiten direkt /indirekt ziehen Sie das spezifische Guave-version, die Sie versuchen auszuschließen.Zweitens der Lösung dieses Konfliktes kann nicht einfach sein. Betrachten Sie die Versionsnummer übergang (11 bis 14), klingt für mich wie eine große übergang, und Sie können haben eine bessere Chance, halten die 14-version und ohne die 11 etwas.
Wenn Sie die version ändern, ist nicht kompatibel mit der Anwendung, haben Sie so ziemlich keine Möglichkeit, etwas zu verwenden, wie
OSGi
um sicherzustellen, können Sie verschiedene Versionen der gleichen Bibliothek in das Projekt.