scala - 将 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 获得不同的提供的依赖项列表?
解决方案
我的用例的解决方案是检查 IntelliJAdd dependencies with "provided" scope to classpath
选项。在这里找到它:
如何有效地使用 SBT、Spark 和“提供的”依赖项?
由于 UI 已更改,以下是 Intellij 2021.2.3 的屏幕截图:
选择它后,您应该看到:
推荐阅读
- java - 以编程方式将 PEM 文件转换为 PKCS8
- google-apps-script - Gmail 插件中的密码字段
- python - xlsxwriter 的 set_header 未按预期工作
- java - Maven Jetty 垃圾邮件警告“从多个位置扫描”
- python - 如何在python tkinter中布局不规则定位的matplotlib条形图,不符合3x3网格
- kubernetes - Istio-proxy 不会通过 global.proxy.includeIPRanges 配置拦截传出流量
- namespaces - “http://”或“mailto:”是否被视为语义语言(如 RDF)中的命名空间?
- reactjs - 道具更改后反应组件不会重新渲染
- naming-conventions - UI 和 DB 中相同概念的不同名称的命名约定
- windows - Qt:如何避免 Windows 软键盘覆盖输入字段?