2012-11-28 36 views
6

我很开心学习Scala,但是我最难掌握如何设置开发环境。什么是Scala + sbt工作流等效于Ruby + Bundler和Gemfile?

在Ruby

  • 文件层次

    my_app/ 
        | 
        +-- Gemfile 
        +-- app.rb 
    
  • 的Gemfile

    source :rubygems 
    gem "mechanize" 
    
  • app.rb

    ​​
  • 安装依附并运行它

    $ bundle install 
    $ ruby app.rb 
    

有什么斯卡拉等效采用SBT?

我在阅读关于sbt以及package/imports/jar依赖关系如何在Java/Scala中工作,但我似乎无法过滤掉骨头的必需品。

  • 用Scala复制上面的最小文件层次结构是什么?
  • 这里的机械化的Java提供的lib Maven的:http://search.maven.org/#search|ga|1|mechanize
  • 一旦运行sbt并下载机械化的依赖,如何辨别你,你需要得到这个工作的必要import报表?

    val agent = new MechanizeAgent 
    val page: HtmlDocument = agent.get("http://www.google.com") 
    

我通过手动导入的.jar文件,然后从库中导入包,直到编译/运行时错误停止和代理工作得到了上述在Eclipse工作。但那次经历令人沮丧,我来这里悔改。

这个问题的意图:Java生态系统/工作流对于我来说是一个压倒一切的人,因为他已经习惯了Ruby的轻松无IDEless工作流程。我认为一个相当于骨头的人会给我一个开始建设的地方。

理想情况下,我希望在依赖Eclipse之前让Scala开发与Vim和命令行一起工作。

回答

1

我想向前迈进一步比FFK的回答,做更多的手工持有,实际上提供了Ruby示例的直接翻译到Scala + sbt。

  • 文件层次

    Crawler/ 
        +- build.sbt 
        +- src/ 
        +- main/ 
         +- scala/ 
          +- Crawler.scala 
    
  • build.sbt

    libraryDependencies += "com.gistlabs" % "mechanize" % "0.11.0" 
    
  • Crawler.scala

    import com.gistlabs.mechanize.MechanizeAgent 
    import com.gistlabs.mechanize.document.Document 
    
    object Crawler extends App { 
        val agent = new MechanizeAgent 
        val page: Document = agent.get("http://google.com") 
    } 
    
  • 安装依附并运行它

    $ sbt run 
    

为了使该项目可导入到Eclipse的IntelliJ或者,你所需要的sbteclipse-插件SBT-想法插件。在斯卡拉应用程序的根目录

// in ~/.sbt/plugins/build.sbt 
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0") 
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.2.0") 

然后,回:但是,而不是在每一个build.sbt为每个新项目申报这些插件,您可以在全球build.sbt宣布他们

$ sbt eclipse 
or 
$ gen-idea 

之后,您应该可以在各自的IDE中打开它。

注意:每当您在build.sbt中添加依赖关系时,都需要重新运行sbt eclipse/gen-idea命令,以便IDE可以将其提取出来。

7

sbt使用名为ivy的库从主Maven存储库导入项目。有几个存储库可以预先配置,包括主要的Maven存储库。

一旦这些库“解析”(下载到您的计算机并连接到您的项目),eclipse插件将为生成的eclipse项目中的每个jar创建依赖项。

这里是你如何配置它。

SBT管理依赖

http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#adding-library-dependencies

添加到项目的build.sbt文件的依赖。如果添加依赖于特定版本的scala的依赖项,请在组和工件名称之间使用两个%%。不要忘记在build.sbt文件中的每个命令之间添加一个空行。

libraryDependencies += "com.gistlabs" % "mechanize" % "0.11.0" 

libraryDependencies += "org.scalatest" %% "scalatest" % "1.6.1" % "test" 

更新的依赖通过运行更新命令:

$ sbt update 

SBT Eclipse插件

https://github.com/typesafehub/sbteclipse/wiki/Installing-sbteclipse

您可以通过创建一个文件来安装SBT蚀全球插件〜/ .sbt/plugins/plugins.sbt并放入此行:

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

无论何时添加或更新的依赖,运行以下命令并刷新您的Eclipse项目:

$ sbt eclipse 
相关问题