覆盖 sbt 中传递依赖的版本
Override a version of transitive dependency in 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 中可用的 GUI(Dependency-Hierarchy 选项卡)显示哪些 jar 覆盖其他,我如何在 sbt 中看到它?
我已经尝试使用 dependencyOverrides 强制执行我想要的版本。但问题仍然是 there.So 我如何检查旧版本是否被我覆盖的版本完全驱逐。 sbt dependencyTree 没有显示较新的已经驱逐了传递依赖。
您可以使用 dependencyOverrides
设置覆盖版本(参见 )。
那么您通常会在 update
期间看到被逐出的版本。但是如果由于某种原因你不这样做,你可以在 sbt 中 运行 show evicted
来输出驱逐警告。示例输出:
...
[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
...
我需要将传递依赖覆盖到相同的更高版本。
在 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 中可用的 GUI(Dependency-Hierarchy 选项卡)显示哪些 jar 覆盖其他,我如何在 sbt 中看到它?
我已经尝试使用 dependencyOverrides 强制执行我想要的版本。但问题仍然是 there.So 我如何检查旧版本是否被我覆盖的版本完全驱逐。 sbt dependencyTree 没有显示较新的已经驱逐了传递依赖。
您可以使用 dependencyOverrides
设置覆盖版本(参见
那么您通常会在 update
期间看到被逐出的版本。但是如果由于某种原因你不这样做,你可以在 sbt 中 运行 show evicted
来输出驱逐警告。示例输出:
...
[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
...