Ich habe ein Projekt mit zwei separaten Modulen, die sqlline und eine andere Bibliothek (zB OtherLib) verwenden, die von jline abhängt. Jedoch auf verschiedenen Versionen.
Modul1 verwendet Sqlline abhängig von jline 2.10
Module2 verwendet OtherLib abhängig von jline 0.9.94
Und die beiden Versionen sind inkompatibel. Daher habe ich die Klassenpfade so eingestellt, dass Modul1 zuerst im Ordner $ HOME / lib / modul1 und dann im Ordner $ HOME / lib zuerst Modul2 sucht.
Gibt es eine Möglichkeit, maven anzugeben, dass das Artefakt zuerst in ein Quellverzeichnis heruntergeladen werden soll (z. B. ../resources/ib ) und dann während der Paketierungszeit in Ich weiß, dass zum Kopieren aus dem Quellverzeichnis der folgende Code verwendet werden kann. Auch um Maven zu bekommen, um die Abhängigkeit herunterzuladen, die ich (für Module2) verwenden kann Wie kann ich sicherstellen, dass assembly.xml
? jline:jline:jar:2.10
zuerst in den Ordner ../resources / lib heruntergeladen wird?
Wenn Sie absolut sicher sind, was Sie tun, können Sie eine Version mit etwas wie maven-shade-plugin
. Aber bitte sei dir absolut sicher, was du tust.
Mit maven-shade-plugin
könnten Sie ein neues Maven-Modul erstellen, sagen wir jline:jline_2_10:jar:1.0
und verwenden jline:jline:jar:2.10
als Abhängigkeit. Das maven-shade-plugin
würde es dann in Ihrem jline_2_10-1.0.jar
verpacken.
Da Ihr neues Artefakt seine eigene groupId:artifactId
-Kombination hat, wird es keine Konflikte mit dem anderen jline:jline:jar:0.9.94
Artefakt geben, also haben Sie beide gerne im Klassenpfad.