【问题标题】:IntelliJ SBT multiproject builds and Dependencies reuseIntelliJ SBT 多项目构建和依赖项重用
【发布时间】:2015-09-24 16:57:17
【问题描述】:

我有一个多项目 SBT 构建:

    • 常见
    • 主要
    • abc

在根级别的项目文件夹 (root/project/Dependencies.scala) 中,我有一个 Dependencies 对象,其中包含依赖项声明:

object Dependencies {

  lazy val scalaLogging = "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"
  lazy val slf4j = "org.slf4j" % "slf4j-api" % "1.7.12"
}

在我的任何子项目(root/common/build.sbt)中,我有一个 build.sbt 尝试导入 Dependencies 对象:

import sbt._
import Dependencies._

libraryDependencies ++= Seq(
  nscalaTime,
  scalaLogging, slf4j, logback
)

这在命令行构建中可以正常工作。但是,在 IntelliJ 中,由于 IDE 无法解析导入依赖项,我得到了红色文本。_

这是多项目 SBT 构建的已知 IntelliJ 问题吗?

确认一下,它不会破坏 SBT 编译,只是 IntelliJ 似乎无法通过导入找到 Dependencies 对象并在各处显示红色文本。

【问题讨论】:

  • 将 libraryDependencies 放入一个对象中。
  • @Jet 感谢您的回复。你能澄清一下你的意思吗,因为我对 SBT 还很陌生?

标签: scala intellij-idea sbt


【解决方案1】:

我可以确认这是带有多项目 sbt 构建的 IntelliJ IDEA 的问题。 但是,这可以在当前版本“2017.1.2”中修复。在主 build.sbt 文件中使用以下行设置具有两个相互依赖的库项目的应用程序的依赖项:

// Projects in this build
lazy val `A_Lib` = project in file("A_Lib")
lazy val `B_Lib` = project in file("B_Lib") dependsOn(`A_Lib`)
lazy val `C_App` = project in file(".")

libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.12"

每个库项目都有自己的 build.sbt 文件。如果例如如果 A_Lib 或 B_Lib 也依赖于 slf4j,那么添加就足够了

libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.12"

到库的 build.sbt 文件。

【讨论】:

    猜你喜欢
    • 2014-04-28
    • 2014-02-18
    • 2017-02-11
    • 2016-06-19
    • 2018-03-20
    • 2018-05-31
    • 2014-02-26
    • 2017-10-19
    • 2020-01-03
    相关资源
    最近更新 更多