Scala开发环境选型: Sublime + sbt + Ensime

简介:

今天在Scala开发环境的选择上纠结了比较久,尝试了Scala IDE,IntelliJ IDEA,也尝试了maven + scala-maven-plugin,最终选择投靠sbt,并且选择Sublime作为编辑器,加上sublime-ensime这个插件。


Scala IDE & IntelliJ IDEA

Scala IDE和Eclipse长得差不多,亲切度较高,且加上Maven for Scala插件之后,可以直接创建Scala的maven项目。我下载来的3.0+版本的scala IDE可以直接创建scala maven项目,并且会生成如下项目结构。但是Scala IDE不具备代码提示功能,高亮的字段不是很全面,且maven相比sbt还是逊色一些。还有一个问题是ScalaIDE不是很完善,有一些小问题。我使用它来看Spark项目的源码,并不选择其作为开发环境。


IntelliJ IDEA的话可能是很多Scala开发者的首选。对我来说,不太熟悉IntelliJ IDEA,刚起步的话还是考虑能快速熟悉和起步,IntelliJ IDEA好像也是支持sbt的。以后我可能会转战到IntelliJ IDEA的平台。


Sublime + sbt + Ensime

sublime还算是一个比较简单又实用的编辑器,很多人会拿它来写脚本语言,适合Win和Mac环境。

sbt的话就不用说了,应该是比maven强大些,而且既然写scala的话,理应尽量去投靠sbt。它有一点比maven方便的地方,就是在sbt console里面,敲 ~complie之后,可以即时编译,如果你有两个屏幕的话,可以在另一块屏幕上看到刚刚敲入并保存的代码编译有没有问题。sbt入门的话可以参看github上的一份文档。sbt的依赖和管理更简洁,又同maven有相同之处,所以也很好上手。

Ensime是github上的一个项目,为Sublime Text 2(Sublime Text 3无法使用,因为两个内置python版本不同,ensime有些python文件需要执行)做的插件,是Sublime下的外部package,我使用之后提炼出它的几点功能(即为Sublime补充的一些内容):

  1. 自己写的类可以通过 ctrl + 鼠标点击 跳转
  2. 没有引入或依赖的包,类,会提示报错
  3. ctrl+alt+b 可以build整个工程,相当于sbt下面敲compile也会build工程一样
  4. alt + i 可以给指定的类显示可以选择导入的目标包,并自动添加import
Ensime需要ctrl + F5启动,Sublime关闭后会停掉。以下是它默认的键盘快捷键支持:

[
  { "keys": ["f9"], "command": "ensime_toggle_breakpoint" },
  { "keys": ["ctrl+shift+f9"], "command": "ensime_clear_breakpoints" },
  { "keys": ["ctrl+f5"], "command": "ensime_startup" },
  { "keys": ["ctrl+shift+f5"], "command": "ensime_shutdown" },
  { "keys": ["f5"], "command": "ensime_smart_run_debugger" },
  { "keys": ["shift+f5"], "command": "ensime_stop_debugger" },
  { "keys": ["f11"], "command": "ensime_step_into" },
  { "keys": ["f10"], "command": "ensime_step_over" },
  { "keys": ["alt+i"], "command": "ensime_add_import" },
  { "keys": ["ctrl+shift+b"], "command": "ensime_build" }
]
更多Ensime的安装,用法和介绍可以 参考github主页,安装和使用很简单。


sbt spark0.8 依赖的一个问题

仅仅在build.sbt下增加

libraryDependencies ++= Seq(
  "org.apache.spark" % "spark-core_2.9.3" % "0.8.0-incubating"
)
然后build的话,会出错,提示

unresolved dependency: com.typesafe.akka#akka-actor;2.0.5: not found
不仅仅是akka-actor,事实上akka-xx的2.0.5都会not found。奇怪的是我在maven环境下,pom.xml里同样是

<dependency> <!-- Spark dependency -->
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_2.9.3</artifactId>
      <version>0.8.0-incubating</version>
 </dependency>
是可以成功导入spark-0.8所有需要的依赖的。因此,我的解决方法是让sbt去使用maven的本地仓库,使用一次后sbt自己的本地仓库里就有akka的相关2.0.5的包了,下面给出我的完整build.sbt内容,

name := "hi-scala"

organization := "com.baidu.smartq"

version := "0.0.1-SNAPSHOT"

scalaVersion := "2.9.3"

resolvers ++= Seq(
  "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/",
  "Local Maven Repo" at "C://Users/zhangbaofeng/.m2/repository"
)

libraryDependencies ++= Seq(
  "org.mongodb" %% "casbah" % "2.6.3",
  "org.slf4j" % "slf4j-api" % "1.6.4",
  "org.slf4j" % "slf4j-simple" % "1.6.4",
  "org.apache.spark" % "spark-core_2.9.3" % "0.8.0-incubating"
)

ivyXML :=
<dependency org="org.eclipse.jetty.orbit" name="javax.servlet" rev="2.5.0.v201103041518">
  <artifact name="javax.servlet" type="orbit" ext="jar"/>
</dependency>
最后的ivyXML部分也是为了一个包而增加上去的,它的报错是下面这个包引起的

org.eclipse.jetty.orbit#javax.servlet;2.5.0.v201103041518!javax.servlet.orbit
添加近ivyXML这段之后就okay了。该问题参考 spark-use mailing list里的一个问题


总结

本文介绍了我的Scala开发环境选型,简单对比了取舍的原因。然后针对sbt下spark-0.8包部分包无法加载问题给出了解决方案,并帖出了完整可用的build.sbt内容。希望可以给同样是起步学习Scala的同学一些帮助。


(全文完)


目录
相关文章
|
分布式计算 Java Shell
安装SBT环境运行Scala项目
安装SBT环境运行Scala项目
490 0
安装SBT环境运行Scala项目
|
12月前
|
分布式计算 Java Hadoop
IntelliJ-IDEA-Mavne-Scala-Spark开发环境搭建
IntelliJ-IDEA-Mavne-Scala-Spark开发环境搭建
|
消息中间件 Java Linux
Linux 下搭建 Scala 开发环境|学习笔记
快速学习 Linux 下搭建 Scala 开发环境。
418 0
Linux 下搭建 Scala 开发环境|学习笔记
|
SQL IDE 关系型数据库
【知识积累】SBT+Scala+MySQL的Demo
 由于项目需要,需要在Sbt+Scala项目中连接MySQL数据库。由于之前使用Maven+Java进行依赖管理偏多,在Sbt+Scala方面也在不断进行摸索,特此记录,作为小模块知识的积累。
207 0
【知识积累】SBT+Scala+MySQL的Demo
|
机器学习/深度学习 分布式计算 Scala
Spark机器学习9· 实时机器学习(scala with sbt)
![](http://img3.douban.com/lpic/s28277325.jpg) [Spark机器学习](http://book.douban.com/subject/26593179/) ### 1 在线学习 模型随着接收的新消息,不断更新自己;而不是像离线训练一次次重新训练。
4753 0
|
Scala Java 数据安全/隐私保护
Intellij idea配置scala开发环境
1.Intellij idea配置scala开发环境 解决Plugin Scala was not installed: No route to host Plugin Scala was not installed: connect timed out Plugin Scala was not installed: Cannot download ‘http://pl
3121 0