为什么 scala-compiler.jar 作为库包含在我的人工制品中

问题描述

当我用

构建人工制品时

sbt universal:packageZipTarball

scala-compiler.jar 作为库包含在我的人工制品中。

  1. 为什么在运行时需要 Scala 编译器?我的理解是不需要它。
  2. 如何排除这个 jar?

解决方法

它可能是由您的 libraryDependencies 之一作为传递依赖项引入的。你可以使用这个 sbt 插件来找出哪一个: https://github.com/sbt/sbt-dependency-graph

一旦发现,您可以通过将 exclude("org.scala-lang","scala-compiler") 附加到相关依赖项来阻止它。 例如,旧版本的 pureconfig 库曾经错误地引入这个依赖项。它可以像这样修复:

libraryDependencies +=
  "com.github.pureconfig" %% "pureconfig" % "0.10.0" exclude("org.scala-lang","scala-compiler")