【问题标题】:Mixing build.sbt with project *.scala files: should all be unified in build.sbt?将 build.sbt 与项目 *.scala 文件混合:都应该在 build.sbt 中统一吗?
【发布时间】:2017-03-01 10:30:10
【问题描述】:

使用 SBT 0.13.13,我们的构建定义继承自旧项目。目前有一个 build.sbt 和一些 project/*.scala 文件。这些 scala 文件遵循相同的模式。这是一个例子:

import sbt._
import sbt.Keys._

object Docs {
  lazy val docTask = TaskKey[Unit]("docPackage", "Generate Scaladoc")

  lazy val settings = Seq(
    docTask := {
      val docs = (doc in Compile).value
      IO.copyDirectory(docs, new java.io.File("src/main/resources/myapp-scaladoc"), overwrite = true)
    },

    docTask := (docTask.dependsOn(doc in Compile)).value
  )
}

Appendix: .scala build definition

在之前的 sbt 版本中,.scala 是唯一的创建方式 多项目构建定义

问题:我想这意味着不鼓励使用单独的 project/*.scala 文件。如果是的话,可以把这些*.scala文件的代码移动到build.sbt中吗?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    project/ 中的代码和build.sbt 中的代码在功能上几乎没有区别。

    将代码放入project/ 中的.scala 文件的好处是,其中的所有符号都被导入到构建的所有子项目中所有build.sbt 文件的命名空间中。这意味着帮助方法、常量、插件或其他 Scala 代码可以位于一个位置,但可以从任何地方调用。

    最终,是否使用此功能取决于您是希望在单个位置还是在多个位置配置共享项目。

    如果您希望将项目设置完全配置在其子项目目录中的单独 build.sbt 文件中,则可以将共享设置放在 project/ 文件夹中。

    如果您可以在根 build.sbt 文件中配置共享设置(或者如果您不使用任何子项目 build.sbt 文件),则可以将所有共享配置合并到其中。

    【讨论】:

      猜你喜欢
      • 2017-01-04
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 2014-05-17
      • 1970-01-01
      • 2014-02-23
      • 2021-07-30
      相关资源
      最近更新 更多