我们通常使用build.sbt
来配置一个sbt项目。由于build.sbt
使用了一些简单易读的格式,在带给我们方便的同时,有时候也不太方便定义一些东西。
这时我们可以将build.sbt
和普通的scala代码结合起来,在scala文件中把东西都定义好,然后在build.sbt
直接调用即可。
multi
├── build.sbt
└── project
├── aaa.scala
└── bbb.scala
这里定义了一个普通的scala文件:
object aaa {
val name = "The name from scala file"
}
同样普通
object bbb {
def hello = { println("method from scala file") }
}
name := aaa.name
version := "1.0"
lazy val hello = taskKey[Unit]("a hello task")
hello := bbb.hello
可以看到在这里,直接使用了aaa
和bbb
中定义的东西。
$ sbt
[info] Loading project definition from /sbttest/multi/project
[info] Done updating.
[info] Compiling 2 Scala sources to /sbttest/multi/project/target/scala-2.10/sbt-0.13/classes...
[info] Set current project to The name from scala file (in build file: /sbttest/multi/)
> name
[info] The name from scala file
> hello
method from scala file
可以看到,当执行sbt
命令的时候,它会自动编译project
目录下的两个scala文件aaa.scala
和bbb.scala
。
当执行name
时,它输出了在aaa
中定义的name
。当执行hello
的时候,它运行的也是bbb
中定义的方法。