Sbt 嵌套依赖

Sbt nested dependsOn

我有一个依赖于子项目 1 的根项目。 subproject1 依赖于 subproject2。 这是否意味着我可以直接在root 中使用subproject2 的源代码?

lazy val root =
  Project(id = "root", base = file(".")).dependsOn(sub1)

lazy val sub1 =
  Project(id = "sub1").dependsOn(sub2)

lazy val sub2 =
  Project(id = "sub2")

是的。来自 Classpath dependencies by sbt:

lazy val core = project.dependsOn(util)

Now code in core can use classes from util. This also creates an ordering between the projects when compiling them; util must be updated and compiled before core can be compiled.

是。

这很容易检查。

build.sbt

name := "sbtdemo"

version := "0.1"

ThisBuild / scalaVersion := "2.13.4"

lazy val root =
  Project(id = "root", base = file(".")).dependsOn(sub1)

lazy val sub1 =
  Project(id = "sub1", base = file("sub1")).dependsOn(sub2)

lazy val sub2 =
  Project(id = "sub2", base = file("sub2"))

sub2/src/main/scala/App.scala

object App {
  def foo() = println("foo")
}

src/main/scala/Main.scala

object Main {
  def main(args: Array[String]): Unit = {
    App.foo() // foo
  }
}