Empfohlener Weg, um eine bestimmte Version der SBT-Abhängigkeit zu erzwingen

9

Eine Abhängigkeit bar hängt von foo 1.2.3 ab, aber diese Version von foo hat einen Fehler und ich muss Version 1.2.2 verwenden.

Ich kann das mit force() machen.

%Vor%

Diese Methode wird von den Dokumenten nicht empfohlen:

  

Erzwingen einer Revision (nicht empfohlen)

     

Hinweis: Das Forcen kann zu logischen Inkonsistenzen führen, daher wird es nicht mehr empfohlen.

Bedeutet dies, dass SBT einen anderen, besseren Weg als force() hat, um eine bestimmte Version einer Abhängigkeit zu verwenden? Wenn ja, was?

Oder soll ich aus der Dokumentation schließen, dass dieses gesamte Problem nicht empfohlen wird?

    
Paul Draper 08.04.2016, 13:50
quelle

1 Antwort

18

Sie können dependencyOverrides verwenden:

%Vor%

Sie vermeiden "logische Inkonsistenzen" sowieso nicht. Wenn Sie eine Version erzwingen, müssen Sie manuell auf Kompatibilität mit anderen Bibliotheken achten, es gibt keinen Ausweg.

Aus der Dokumentation:

  

Überschreiben einer Version

     

Bei binärkompatiblen Konflikten bietet sbt Abhängigkeitsüberschreibungen.   Sie werden mit der Einstellung dependencyOverrides konfiguriert, die a ist   Satz von ModuleIDs. Zum Beispiel die folgenden Abhängigkeitsdefinitionen   Konflikt, weil Spark log4j 1.2.16 verwendet und scalaxb log4j verwendet   1.2.17:

%Vor%      

Der Standardkonfliktmanager wählt die neueste Version von log4j, 1.2.17:

%Vor%      

Um die Version zu ändern   ausgewählt, fügen Sie eine Überschreibung hinzu:

%Vor%
    
Giovanni Caporaletti 08.04.2016, 14:07
quelle

Tags und Links