我有一个包含多个模块的sbt项目,每个模块都有自己的build.sbt
文件。
在根项目中,我有以下内容:
lazy val commonSettings = Seq(
organization := "com.game.scala",
sourcesInBase := false,
fork in run := true,
scalaVersion := "2.12.1"
)
lazy val common = project.settings(commonSettings)
lazy val original = project.settings(commonSettings).dependsOn(common)
lazy val functional = project.settings(commonSettings).dependsOn(common)
lazy val root = (project in file("."))
.aggregate(original, functional)
.settings(commonSettings)
所有子模块中的build.sbt几乎相同:
lazy val module = (project in file("."))
.settings(
name := "Game subpart",
version := "0.1.0-SNAPSHOT"
)
项目布局如下:
root
|__ common
|__ original
|__ functional
问题是,在functional
模块中,如果我尝试导入common
模块中声明的特征,我会收到一个错误,它不可用:
错误:(1,12)对象游戏不是包com的成员
import com.game.scala
我错过了什么?
答案 0 :(得分:1)
这是因为您从未编译过common
项目。除非明确要求,否则dependsOn
方法仅向其他项目添加依赖项,但不对其执行任何操作。如果您希望在编译functional
模块时重新编译依赖项,则应同时执行dependsOn(common)
和aggregate(common)
。