覆盖Build.scala中的“project”命令

时间:2013-08-04 20:37:17

标签: scala sbt

我有一个非常繁重的项目,有很多模块,也就是sbt子项目,每个子项目都有一个很大的公司名称前缀。我试图找到project命令任务键并覆盖它,但没有成功。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

最好的办法是使用自己的Scala文件创建一个专用对象,该文件将定义一个def项目。

这样你可以有类似的东西:

[your company].scala

object <your company> {
  def Project(name: String = "", path: sbt.File, dependencies: Seq[ModuleID] = Seq.empty, isCompanyProject: Boolean = true) = {
    val settings = ...
    val projectName = if (companyProject) {
      ... // [your company / your project / whatever] + "-" + name
    } else name

    val project = sbt.Project(projectName, path, settings = ...)

    project
  }
}

ApplicationBuild.scala文件位于同一文件夹中:

object ApplicationBuild extends Build {
  ...
  lazy val foo = <your company>.Project("foo", sbt.file("foo"), fooDependencies)
}

这样你就可以创建一个[your company]任务,用你公司的前缀调用project