有人能解释使用SBT的正确方法吗?

Jac*_*ack 100 scala sbt

我已经离开衣柜了!我不明白SBT.在那里,我说,现在请帮助我.

条条大路通罗马,那是SBT一样的:要开始SBTSBT,SBT Launcher,SBT-extras,等,然后有不同的方式,包括和决定库.有最好的方式吗?

我问,因为有时候我有点失落.SBT文件非常全面和完整,但我发现自己不知道何时使用build.sbtproject/build.propertiesproject/Build.scalaproject/plugins.sbt.

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

最重要的可能是,如何在项目中找到合适的存储库和版本?我是否只是拔出一把小砍刀并开始乱砍我前进的方向?我经常发现包括所有东西和厨房水槽的项目,然后我意识到 - 我不是唯一一个迷失方向的人.

举个简单的例子,我现在开始一个全新的项目.我想用最新的功能SLICKScala这很可能需要最新版本的SBT的.什么是开始的理所当然的,为什么?我应该在什么文件中定义它以及它应该如何?我知道我可以让这个工作,但我真的想要一个专家意见,应该去哪里(为什么它应该去那里会有奖金).

我已经用SBT了一年多的小项目了.我使用SBT然后SBT Extras(因为它使一些头痛神奇地消失),但我不知道为什么我应该使用这一个或另一个.我只是因为不理解事物如何组合(SBT和存储库)而感到有些沮丧,并且认为如果可以用人类的术语来解释它会拯救下一个如此困难的人.

huy*_*hjl 29

最重要的可能是,如何在项目中找到合适的存储库和版本?我是否只是拔出一把小砍刀并开始乱砍我前进的方向?我经常发现包括所有东西和厨房水槽的项目

对于基于Scala的依赖项,我会考虑作者的建议.例如:http://code.google.com/p/scalaz/#SBT表示使用:

libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.4"
Run Code Online (Sandbox Code Playgroud)

https://github.com/typesafehub/sbteclipse/有关于添加位置的说明:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0-RC1")
Run Code Online (Sandbox Code Playgroud)

对于基于Java的依赖项,我使用http://mvnrepository.com/查看其中的内容,然后单击SBT选项卡.例如http://mvnrepository.com/artifact/net.sf.opencsv/opencsv/2.3表示使用:

libraryDependencies += "net.sf.opencsv" % "opencsv" % "2.3"
Run Code Online (Sandbox Code Playgroud)

然后拔出弯刀,开始向前砍伐.如果你很幸运,你最终不会使用依赖于某些相同罐子但具有不兼容版本的罐子.鉴于Java生态系统,您通常最终会包含所有内容和厨房接收器,并且需要花费一些精力来消除依赖关系或确保您不会错过所需的依赖关系.

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

我认为理所当然的是逐渐建立起免疫力.

确保你明白:

  1. 范围格式 {<build-uri>}<project-id>/config:key(for task-key)
  2. 设置的3个香精(SettingKey,TaskKey,InputKey) -在阅读"任务键"一节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记录在任何地方.如果有更好的方式我想了解它.


Cha*_*ton 25

我使用sbt的方式是:

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

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

您可以在此处查看此类设置示例.