sbt:有没有更好的方法来构建大型build.sbt文件

And*_*ann 4 scala build sbt

问题描述:大型sbt文件

我们目前build.sbt拥有250多条生产线.

我们有两个问题:

可读性

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

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

enablePlugins(DockerPlugin)

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

lazy val projectName =
 (project in file(".")).....
Run Code Online (Sandbox Code Playgroud)

逻辑重用

我们有一些配置逻辑,我们希望在不同的项目之间共享.

有没有办法包含其他*.sbt文件?或者你有一个建议如何解决这个问题而不诉诸写sbt插件

Rüd*_*ehn 5

您可以做的一件事是将构建信息的一部分分解为项目目录中的scala文件.

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

object Dependencies {

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

  // ...
}
Run Code Online (Sandbox Code Playgroud)

然后可以从build.sbt导入:

import Dependencies._

lazy val foo = Project(...) dependsOn (akka_actor, ...)
Run Code Online (Sandbox Code Playgroud)

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

更新:在寻找有关如何组织构建的灵感时,我经常做的一件事是查看复杂,高调的scala项目(如akka)的构建.如您所见,他们已将大量逻辑移动到项目目录中的scala文件中.构建本身在AkkaBuild.scala中定义.


zig*_*tar 5

有没有办法包含其他*.sbt文件?

是的,您可以简单地将build.sbt文件的一部分放入*.sbt项目根目录中的其他文件中。SBT 选取所有*.sbt文件并将它们合并在一起,因为只有一个大文件。