有人可以解释正确的方式来使用SBT?
我要走出这个壁橱! 我不明白SBT。 在那里,我说,现在请帮助我。
所有的道路都通往罗马,对于SBT来说也是一样的:要开始使用SBT
有SBT
, SBT Launcher
, SBT-extras
等等,然后有不同的方法来包含和决定库。 有没有“最好的”方法?
我在问,因为有时我会有点迷路。 SBT文档非常全面和完整,但是我发现自己不知道何时使用build.sbt
或者project/build.properties
或者project/Build.scala
或者project/plugins.sbt
。
然后它变得有趣,有Scala-IDE
和SBT
– 一起使用它们的正确方法是什么? 首先是鸡还是鸡蛋?
最重要的是,你如何find正确的存储库和版本来包含在你的项目中? 我只是拔出一个machette,开始黑客前进? 我常常find包括所有东西和厨房水槽的项目,然后我意识到 – 我不是唯一一个有点迷路的人。
举个简单的例子,现在我开始一个全新的项目。 我想使用SLICK
和Scala
的最新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立起免疫力 。
确保你明白:
- 范围格式
{<build-uri>}<project-id>/config:key(for task-key)
- (
SettingKey
,TaskKey
,InputKey
)的三种风格 – 阅读http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def中的; “任务键”一节
随时打开这4个页面,以便您可以跳转并查找各种定义和示例:
- http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def
- http://www.scala-sbt.org/release/docs/Detailed-Topics/index
- http://harrah.github.com/xsbt/latest/sxr/Keys.scala.html
- http://harrah.github.com/xsbt/latest/sxr/Defaults.scala.html
最大限度地利用show
和inspect
以及标签填写来熟悉设置的实际值,依赖关系,定义和相关设置。 我不相信你会发现使用inspect
的关系是随处可见的。 如果有更好的方法我想知道它。
我使用sbt的方式是:
- 使用sbt-extras – 只需获取shell脚本并将其添加到项目的根目录即可
- 创build一个项目文件夹与MyProject.scala文件设置SBT。 我更喜欢这个build.sbt方法 – 它的scala,更灵活
- 创build一个project / plugins.sbt文件并为您的IDE添加适当的插件。 无论是sbt-eclipse,sbt-idea还是ensime-sbt-cmd,都可以生成eclipse,intellij或ensime的项目文件。
- 在您的项目的根目录中启动sbt并为您的IDE生成项目文件
- 利润
我不打扰检查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)