dan*_*neu 6 development-environment scala sbt
我正在学习Scala,但我正在努力学习如何设置开发环境.
文件层次结构
my_app/
|
+-- Gemfile
+-- app.rb
Run Code Online (Sandbox Code Playgroud)的Gemfile
source :rubygems
gem "mechanize"
Run Code Online (Sandbox Code Playgroud)app.rb
require "mechanize"
agent = Mechanize.new
page = agent.get("http://google.com")
Run Code Online (Sandbox Code Playgroud)安装依赖项并运行它
$ bundle install
$ ruby app.rb
Run Code Online (Sandbox Code Playgroud)我正在阅读关于sbt以及package/imports/jar依赖项如何在Java/Scala中工作,但我似乎无法过滤掉这些必需品.
运行sbt并下载Mechanize依赖项后,如何识别使其运行所需的必要import语句?
val agent = new MechanizeAgent
val page: HtmlDocument = agent.get("http://www.google.com")
Run Code Online (Sandbox Code Playgroud)我通过手动导入.jars然后从库中导入包直到编译器/运行时错误停止并且代理工作,从而在Eclipse中工作.但这种经历令人沮丧,我来这里悔改.
这个问题的含义:Java生态系统/工作流程对我来说是压倒性的,因为他已经习惯了Ruby的轻松无IDE工作流程.我认为相当于一块骨头会给我一个开始建立的地方.
理想情况下,我希望在依赖Eclipse之前让Scala开发只使用Vim和命令行.
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"
Run Code Online (Sandbox Code Playgroud)
通过运行update命令更新依赖项:
$ sbt update
Run Code Online (Sandbox Code Playgroud)
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")
Run Code Online (Sandbox Code Playgroud)
无论何时添加或更新依赖项,请运行以下命令并刷新eclipse项目:
$ sbt eclipse
Run Code Online (Sandbox Code Playgroud)
我想比 ffk 的答案更进一步,做更多的指导,并实际上提供 Ruby 示例到 Scala + sbt 的直接翻译。
文件层次结构
Crawler/
+- build.sbt
+- src/
+- main/
+- scala/
+- Crawler.scala
Run Code Online (Sandbox Code Playgroud)构建.sbt
libraryDependencies += "com.gistlabs" % "mechanize" % "0.11.0"
Run Code Online (Sandbox Code Playgroud)爬虫.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")
}
Run Code Online (Sandbox Code Playgroud)安装依赖并运行
$ sbt run
Run Code Online (Sandbox Code Playgroud)要使项目可导入 Eclipse 或 IntelliJ,您需要sbteclipse-plugin或sbt-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")
Run Code Online (Sandbox Code Playgroud)
然后,返回 Scala 应用程序的根目录:
$ sbt eclipse
or
$ gen-idea
Run Code Online (Sandbox Code Playgroud)
然后,您应该能够在相应的 IDE 中打开它。
注意:每当您在 build.sbt 中添加依赖项时,您都需要重新运行sbt eclipse/gen-idea命令,以便 IDE 可以拾取它。