sbt DSL的人道指导

时间:2015-01-29 20:09:11

标签: scala sbt

我还需要做一些与sbt完全无关的事情,而不是发现自己浪费了很多时间。 official documentation是故事般的循环,完全没有帮助争论DSL。除了scaladoc之外,整个DSL还没有记录。例如。以http://www.scala-sbt.org/0.13/tutorial/Basic-Def.html为例。

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

  1. 设置

  2. 任务

  3. 作用域

  4. 与上述实体/类相关的DSL的关键运营商和方法

  5. 可在DSL中与之互动的现成对象

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

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

  8. 多项目.sbt v。裸项目.sbt - 您如何区分?

  9. 是否有对sbt文件的ScalaIDE支持?

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

我的*.sbt个文件是62 Kb,我认为它们是可读的。任务和设置可以包含嵌入式文档,这可能是冗长的。

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

val myTask = taskKey[String]("""
   documentation.....
""")

通过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
))

与单一项目没有什么不同:

setting1 := value1
setting2 := value2

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