scala - sbt : Is there a better way of structuring large build. sbt 文件

标签 scala build sbt

问题描述:sbt文件大

我们目前的build.sbt跨越 250 多行。

我们有两个问题:

可读性

当前方法分组数据和评论:

// Plugins ///////////////////////////////////////////////////

enablePlugins(DockerPlugin)

// basic configuration : projects ///////////////////////////
name := """projectName"""

lazy val projectName =
 (project in file(".")).....

逻辑重用

我们有一些配置逻辑想要在不同的项目之间共享。



有没有办法包括其他 *.sbt文件?
或者你有什么建议如何在不求助于编写 sbt 插件的情况下解决这个问题?

最佳答案

您可以做的一件事是将部分构建信息分解到项目目录中的 Scala 文件中。

例如。在我们的构建中,我们在项目目录中有一个文件 Dependencies.scala,它在一个地方包含了各种项目的所有依赖项:

object Dependencies {

  val akka_actor = "com.typesafe.akka" %% "akka-actor" % "2.3.13"

  // ...
}

然后可以从 build.sbt 导入:
import Dependencies._

lazy val foo = Project(...) dependsOn (akka_actor, ...)

您还可以将任务和命令放入项目目录中的对象中。

更新:在寻找有关如何组织构建的灵感时,我经常做的一件事是查看复杂的、备受瞩目的 Scala 项目的构建,例如 akka .正如你所看到的,他们已经将很多逻辑移到了 project directory 中的 Scala 文件中。 .构建本身在 AkkaBuild.scala 中定义.

关于scala - sbt : Is there a better way of structuring large build. sbt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33566372/

相关文章:

android gradle 本地路径不存在

java - 如何在 gradle 构建中有许多任务配置?

build - 在后续构建中保存并重新打印成功编译文件的警告?

sbt.ResolveException : unresolved dependency: org. apache.spark#spark-core_2.11;2.1.2:找不到

scala - 告诉SBT一起收集我所有的依赖项

java - 在 Scala 中相当于 Java '?'

scala - 将元组添加到 map ?

scala - 如何在多项目中使用 Play 框架?

performance - 为什么Scala中foldLeft前面的过滤器很慢?

mysql - 在spark sql中转换两个数据帧