sbt DSL的人道指导

mat*_*ter 9 scala sbt

我还没有必要做一些与sbt完全无关的事情,而不是发现自己浪费了很多时间.该官方文档是故事般的和环状的,完全不是扯皮的DSL很有帮助.除了scaladoc之外,整个DSL还没有记录.例如,检查http://www.scala-sbt.org/0.13/tutorial/Basic-Def.html作为一个例子.

有人可以推荐涵盖最后一个链接主题的人性化教程或参考,或者更好的是,为以下内容提供明确的建设性描述:

  1. 按键

  2. 设置

  3. 任务

  4. 领域

  5. 与上述实体/类相关的DSL的关键运算符和方法

  6. 可以在DSL中与之交互的关键开箱即用对象

  7. 如何定义和调用函数而不是普通的scala代码,并且.scala构建定义是否真的被弃用了?

  8. 如何在几个文件中拆分构建定义,而不是在build.sbt中有一大堆代码(或者,如何构建一个月后仍然可以读取的.sbt文件).

  9. 多项目.sbt与裸项目.sbt- 您如何区分?

  10. 是否有任何ScalaIDE支持sbt文件?

请只关注sbt 0.13.x,因为其他一切都在变老......

dav*_*rez 1

1-除了官方文档All Jazz之外,我所知道的参考资料,我推荐包含这些优秀文章的博客:

7-我不关心project/*.scala文件是否被弃用,但定义设置和任务的*.sbt语法更轻。我*.scala仅将文件用于代码。

8- 我自己我已将build.sbt文件分成几个文件。基本文件夹中带有.sbt扩展名的所有文件将聚合为一个大文件。

我只需重复 a 的定义settingKey,而不是它的实现。

我的*.sbt文件有 62 Kb,我认为它们是可读的。任务和设置可以具有嵌入的文档,该文档可能很详细。

val mySetting = settingKey[String]("""
   documentation.....
""")

val myTask = taskKey[String]("""
   documentation.....
""")
Run Code Online (Sandbox Code Playgroud)

借助 IDEA,我可以轻松查看结构并快速导航到任何设置或任务,并查看其实现。

为了避免 中的噪音*.sbt,当任务的执行时间较长时,我将其写入单独的project/*.scala文件中。

可以在其他项目中重用的通用代码,我将其放在单独的.scala文件中。

9- 多项目 SBT 文件。

它只有几行,如下所示:

lazy val myFirstProject = project.settings(Seq(
   setting1 := value1,
   setting2 := value2
))
lazy val mySecondProject = project.settings(Seq(
   setting1 := value1,
   setting2 := value2
))
Run Code Online (Sandbox Code Playgroud)

它与单个项目没有太大区别:

setting1 := value1
setting2 := value2
Run Code Online (Sandbox Code Playgroud)

10- 对于编辑 SBT 文件,IDEA 及其 Scala 插件确实工作得很好。
Scala IDE 没有,这就是我使用 IDEA 而不是 Eclipse 的主要原因。