有人可以解释正确的方式来使用SBT?

我要走出这个壁橱! 我不明白SBT。 在那里,我说,现在请帮助我。

所有的道路都通往罗马,对于SBT来说也是一样的:要开始使用SBTSBTSBT LauncherSBT-extras等等,然后有不同的方法来包含和决定库。 有没有“最好的”方法?

我在问,因为有时我会有点迷路。 SBT文档非常全面和完整,但是我发现自己不知道何时使用build.sbt或者project/build.properties或者project/Build.scala或者project/plugins.sbt

然后它变得有趣,有Scala-IDESBT一起使用它们的正确方法是什么? 首先是鸡还是鸡蛋?

最重要的是,你如何find正确的存储库和版本来包含在你的项目中? 我只是拔出一个machette,开始黑客前进? 我常常find包括所有东西和厨房水槽的项目,然后我意识到 – 我不是唯一一个有点迷路的人。

举个简单的例子,现在我开始一个全新的项目。 我想使用SLICKScala的最新function,这可能需要最新版本的SBT。 什么是开始的理智点,为什么? 我应该在什么文件中定义它,看起来应该如何? 我知道我可以得到这个工作,但我真的很喜欢专家的意见,应该去哪里(为什么应该去那里会有奖金)。

我已经使用SBT进行了一年多的小型项目。 我使用了SBT ,然后是SBT Extras (因为它让一些头痛奇迹般地消失),但我不确定为什么我应该使用这个或那个。 我只是有点沮丧,不理解这些东西是如何融合在一起的( SBT和知识库),并认为如果能从人的angular度来解释这个问题,那么下一个这样的人就会有很大的困难。

最重要的是,你如何find正确的存储库和版本来包含在你的项目中? 我只是拔出一个machette,开始黑客前进? 我经常发现包括一切和厨房水槽的项目

对于基于Scala的依赖关系,我会按照作者的build议去做。 例如: http : //code.google.com/p/scalaz/#SBT表示使用:

 libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.4" 

或者https://github.com/typesafehub/sbteclipse/有关于在哪里添加的说明:;

 addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0-RC1") 

对于基于Java的依赖关系,我使用http://mvnrepository.com/来查看有什么内容,然后点击SBT选项卡。; 例如http://mvnrepository.com/artifact/net.sf.opencsv/opencsv/2.3表示使用:;

 libraryDependencies += "net.sf.opencsv" % "opencsv" % "2.3" 

然后拉出马槽,开始黑客前进。 如果你幸运的话,最终不要使用依赖于一些相同的瓶子,但版本不兼容的jar子。 鉴于Java生态系统,你通常最终将包括所有东西和厨房水槽,它需要一些努力消除依赖或确保你不会错过所需的依赖关系。

举个简单的例子,现在我开始一个全新的项目。 我想使用SLICK和Scala的最新function,这可能需要最新版本的SBT。 什么是开始的理智点,为什么?

我认为理智的一点是逐渐build立起免疫力 。

确保你明白:

  1. 范围格式{<build-uri>}<project-id>/config:key(for task-key)
  2. SettingKeyTaskKeyInputKey )的三种风格 – 阅读http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def中的; “任务键”一节

随时打开这4个页面,以便您可以跳转并查找各种定义和示例:

  1. http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def
  2. http://www.scala-sbt.org/release/docs/Detailed-Topics/index
  3. http://harrah.github.com/xsbt/latest/sxr/Keys.scala.html
  4. http://harrah.github.com/xsbt/latest/sxr/Defaults.scala.html

最大限度地利用showinspect 以及标签填写来熟悉设置的实际值,依赖关系,定义和相关设置。 我不相信你会发现使用inspect的关系是随处可见的。 如果有更好的方法我想知道它。

我使用sbt的方式是:

  1. 使用sbt-extras – 只需获取shell脚本并将其添加到项目的根目录即可
  2. 创build一个项目文件夹与MyProject.scala文件设置SBT。 我更喜欢这个build.sbt方法 – 它的scala,更灵活
  3. 创build一个project / plugins.sbt文件并为您的IDE添加适当的插件。 无论是sbt-eclipse,sbt-idea还是ensime-sbt-cmd,都可以生成eclipse,intellij或ensime的项目文件。
  4. 在您的项目的根目录中启动sbt并为您的IDE生成项目文件
  5. 利润

我不打扰检查IDE项目文件,因为它们是由sbt生成的,但是可能有这样的理由。

你可以在这里看到一个例子。

使用Typesafe Activator,这是调用sbt的奇妙方式,它带有项目模板和种子: https ://typesafe.com/activator

 Activator new Fetching the latest list of templates... Browse the list of templates: http://typesafe.com/activator/templates Choose from these featured templates or enter a template name: 1) minimal-java 2) minimal-scala 3) play-java 4) play-scala (hit tab to see a list of all templates)