6

我在学习 Scala 时玩得很开心,但我很难掌握如何设置开发环境。

在红宝石中

  • 文件层次结构

    my_app/
      |
      +-- Gemfile
      +-- app.rb
    
  • 宝石文件

    source :rubygems
    gem "mechanize"
    
  • 应用程序.rb

    require "mechanize"
    agent = Mechanize.new
    page = agent.get("http://google.com")
    
  • 安装依赖并运行

    $ bundle install
    $ ruby app.rb
    

sbt 的 Scala 等价物是什么?

我正在阅读 sbt 以及包/导入/jar 依赖项如何在 Java/Scala 中工作,但我似乎无法过滤掉最基本的必需品。

  • 用 Scala 复制上述内容的最小文件层次结构是什么?
  • 这是 Maven 上可用的 Java Mechanize 库:http ://search.maven.org/#search|ga|1|mechanize
  • 一旦你运行sbt并下载了 Mechanize 依赖项,你如何辨别import你需要让它工作的必要语句?

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

通过手动导入 .jars 然后从库中导入包,直到编译器/运行时错误停止并且代理工作,我在 Eclipse 中完成了上述工作。但那次经历令人沮丧,我来这里是为了悔改。

这个问题的意图:Java 生态系统/工作流程对我来说是压倒性的,因为我已经习惯了 Ruby 轻松、无 IDE 的工作流程。我认为一个简单的骨骼等价物会给我一个开始构建的地方。

理想情况下,我希望在依赖 Eclipse 之前只使用 Vim 和命令行进行 Scala 开发。

4

2 回答 2

7

sbt 使用名为 ivy 的库从主 maven 存储库导入项目。有一些 sbt 预配置的存储库可以使用,包括主 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"

通过运行 update 命令更新依赖项:

$ sbt update

sbt Eclipse 插件

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

您可以通过在 ~/.sbt/plugins/plugins.sbt 创建一个文件并将此行放入其中来全局安装 sbt eclipse 插件:

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

每当您添加或更新依赖项时,运行以下命令并刷新您的 eclipse 项目:

$ sbt eclipse
于 2012-11-28T22:32:40.527 回答
1

我想比 ffk 的答案更进一步,做更多的手把手,并实际上提供 Ruby 示例到 Scala + sbt 的直接翻译。

  • 文件层次结构

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

    libraryDependencies += "com.gistlabs" % "mechanize" % "0.11.0"
    
  • 爬虫.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-pluginsbt-idea插件。但是不必为每个新项目在每个 build.sbt 中声明这些插件,您可以在全局 build.sbt 中声明它们:

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

然后,回到 Scala 应用程序的根目录:

$ sbt eclipse
or
$ gen-idea

之后,您应该能够在相应的 IDE 中打开它。

注意:每当您在 build.sbt 中添加依赖项时,您都需要重新运行sbt eclipse/gen-idea命令,以便 IDE 可以选择它。

于 2012-12-14T19:21:59.960 回答