Maven - transitive Abhängigkeiten mit verschiedenen Versionen

8
  • lässt annehmen, dass meine Anwendung foo.jar und bar.jar
  • benötigt
  • foo.jar benötigt Version 1.0 von c.jar
  • bar.jar benötigt Version 2.0 von c.jar

Wie löst Maven diesen Konflikt? Welche Version von c.jar wird verwendet?

    
Frizz 05.11.2011, 22:09
quelle

2 Antworten

13

Es hängt von der Reihenfolge der Deklaration in Ihrem effektiven POM ab. Wenn foo.jar zuerst angezeigt wird, erhalten Sie Version 1.0 von c.jar . Wenn andererseits bar.jar zuerst deklariert wird, wird es Version 2.0 von c.jar sein.

Relevante Dokumentation :

  

... zwei Abhängigkeitsversionen haben dieselbe Tiefe in der Abhängigkeit   Baum, bis Maven 2.0.8 wurde nicht definiert, welchen man gewinnen würde, aber   seit Maven 2.0.9 zählt die Reihenfolge in der Deklaration: der   erste Deklaration gewinnt

    
Sri Sankaran 05.11.2011, 23:50
quelle
1

Es wird 2.0 verwenden. (außer am 1. April, wenn es 3.0 verwenden wird). Beachten Sie, dass die Vergleichsfunktion für komplexere Versionszeichenfolgen nicht nur lexikalisch ist.

    
bmargulies 05.11.2011 22:19
quelle