2012-11-28 66 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 
相關問題