Переопределить версию транзитивной зависимости в sbt

У меня есть требование переопределить переходную зависимость к более поздней версии того же самого.

В maven я могу сделать это, просто добавив переопределяющий сверху.

  <dependencies>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.9</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.8.9</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.module</groupId>
      <artifactId>jackson-module-scala_2.11</artifactId>
      <version>2.8.9</version>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_${scala.version.dist}</artifactId>
      <version>${spark.version}</version>
    </dependency>
    <dependency>
    <dependency>
      <groupId>com.mypackage.road</groupId>
      <artifactId>package-that-contains-transitive-deps</artifactId>
      <version>4.2.0</version>
    </dependency>

Как я могу сделать это в sbt? Также как и графический интерфейс, доступный в maven (вкладка Dependency-Hierarchy), который показывает, какие банки переопределяют другие, как я могу увидеть это в sbt?

Я уже пытался форсировать нужные мне версии с помощью dependencyOverrides. Но проблема все еще существует. Итак, как я могу проверить, что старая версия точно вытеснена версией, которую я переопределяю. sbt dependencyTree не показывает, что более новый вытеснил транзитивную зависимость.


person Srinivas    schedule 28.03.2018    source источник
comment
Существует хороший плагин sbt для проверки того, какие зависимости исключаются в пользу какой версии: sbt-dependency- график   -  person Sascha Kolberg    schedule 28.03.2018


Ответы (1)


Вы можете переопределить версии, используя параметр dependencyOverrides (см. связанный ответ).

Затем вы обычно видите исключенные версии во время update. Но если по какой-то причине вы этого не сделаете, вы можете запустить show evicted в sbt для вывода предупреждений о выселении. Пример вывода:

...
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn]  * org.scalameta:inputs_2.12:2.1.2 is selected over 2.0.0-M3
[warn]      +- org.scalameta:scalameta_2.12:2.1.2                 (depends on 2.1.2)
[warn]      +- org.scalameta:quasiquotes_2.12:2.1.2               (depends on 2.1.2)
...
[warn] Run 'evicted' to see detailed eviction warnings
[info] Here are other depedency conflicts that were resolved:
[info]  * com.trueaccord.scalapb:scalapb-runtime_2.12:0.6.6 is selected over 0.6.2
[info]      +- org.scalameta:langmeta_2.12:2.1.2                  (depends on 0.6.2)
[info]      +- org.scalameta:metals_2.12:0.1-SNAPSHOT             (depends on 0.6.2)
[info]  * com.lihaoyi:sourcecode_2.12:0.1.4 is selected over 0.1.3
[info]      +- com.lihaoyi:fansi_2.12:0.2.5                       (depends on 0.1.4)
[info]      +- com.lihaoyi:fastparse-utils_2.12:0.4.4             
...
person laughedelic    schedule 28.03.2018