scala - 什么是 Scala + sbt 工作流程,相当于带有 Gemfile 的 Ruby + Bundler?

标签 scala development-environment sbt

我在学习 Scala 方面玩得很开心,但在掌握如何设置开发环境方面却遇到了最困难的时间。

在 ruby 中

  • 文件层次结构
    my_app/
      |
      +-- Gemfile
      +-- app.rb
    
  • 文件
    source :rubygems
    gem "mechanize"
    
  • 应用程序
    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 开发。

    最佳答案

    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
    

    关于scala - 什么是 Scala + sbt 工作流程,相当于带有 Gemfile 的 Ruby + Bundler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13614974/

    相关文章:

    scala - 如何将 double 组转换为 RDD[String]

    linux - 如何使用新的环境变量打开 gnome-terminal?

    javascript - 如何配置Webpack?

    java - 为什么 SBT 检测不到 Java 中的主类? (未检测到主类)

    scala - Scala 中的函数文字是什么?

    scala - 使用带有一些基类、抽象类或特征参数化列表的类型类的最佳方法

    ios - 在 iOS 中归档发布版本之前,有什么方法可以自动运行我所有的单元测试

    scala - Artifactory + Jenkins : Publishing to a maven repository from a freestyle build

    scala - 如何让 sbt `console` 使用 -Yrepl-sync?

    java - HBase:如何在单个扫描操作中指定多个前缀过滤器