Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2014-09-13) 在Build.scala中定义多个子项目

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

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

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, coreutil

其中core依赖于util,这意味着在util中定义的类可以直接在core项目中使用

root项目将coreutil组合起来了,这表示在root中执行某个任务时,会自动调用coreutil中相应的任务。

可以看到这里的定义跟之前在build.sbt中的定义基本上是一致的,只是在这里可以完全按照scala的语法来写,来组织代码,更加灵活一些。

comments powered by Disqus