首页 > 解决方案 > 将 Intellij 与 SBT 一起使用时如何更改提供的依赖项?

问题描述

我的 build.sbt 看起来像这样:

libraryDependencies ++= Seq(
  "org.apache.hadoop" % "hadoop-aws" % sparkVersion % Provided,
  "org.apache.spark" %% "spark-core" % sparkVersion % Provided,
  "org.apache.spark" %% "spark-sql" % sparkVersion % Provided,
  "org.scala-lang" % "scala-library" % scalaVersion.value % Provided
)

从 Intellij 运行我的应用程序时,我收到NoClassDefFoundError异常,因为它找不到 spark 库。所以在使用 Intellij 时,我需要:

libraryDependencies ++= Seq(
  "org.apache.hadoop" % "hadoop-aws" % sparkVersion,
  "org.apache.spark" %% "spark-core" % sparkVersion,
  "org.apache.spark" %% "spark-sql" % sparkVersion,
  "org.scala-lang" % "scala-library" % scalaVersion.value % Provided
)

但这会导致最终的扁平罐子非常大。

如何根据是否使用 Intellij 获得不同的提供的依赖项列表?

标签: scalaintellij-ideasbt-assembly

解决方案


我的用例的解决方案是检查 IntelliJAdd dependencies with "provided" scope to classpath选项。在这里找到它:
如何有效地使用 SBT、Spark 和“提供的”依赖项?

由于 UI 已更改,以下是 Intellij 2021.2.3 的屏幕截图:

选择它后,您应该看到:


推荐阅读