IntelliJ SBT多项目构建和依赖关系重用

时间:2015-07-07 09:21:37

标签: scala intellij-idea sbt

我有一个多项目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对象并在任何地方显示红色文本。

1 个答案:

答案 0 :(得分:1)

我可以确认这是IntelliJ IDEA与多项目sbt构建的问题。 但是,这可以在当前版本“2017.1.2”中修复。使用main.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"

到librarie的build.sbt文件。