TODO: add link to another article
在前面的文章里,我们通过build.sbt
定义了多个子项目,那么如何使用Build.scala
来完成同样的事情呢?
multi
├── project
│ └── Build.scala
├── HelloMulti.scala
├── core
│ └── HelloCore.scala
└── util
└── HelloUtil.scala
其中各HelloXXX.scala
的内容跟之前一样,这里只看project/Build.scala
import sbt._
import sbt.Keys._
object MultiBuild extends Build {
lazy val root = Project(
id = "root",
base = file("."),
settings = Project.defaultSettings ++ Seq(
name := "Root",
organization := "freewind",
version := "0.1.0",
scalaVersion := "2.11.0"
// other settings here
)
).aggregate(util, core)
lazy val util = project
lazy val core = project.dependsOn(util)
}
在这里,我们定义了三个项目,分别是root
, core
和util
。
其中core
依赖于util
,这意味着在util
中定义的类可以直接在core
项目中使用
root
项目将core
和util
组合起来了,这表示在root
中执行某个任务时,会自动调用core
和util
中相应的任务。
可以看到这里的定义跟之前在build.sbt
中的定义基本上是一致的,只是在这里可以完全按照scala的语法来写,来组织代码,更加灵活一些。