今天在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补充的一些内容):
- 自己写的类可以通过 ctrl + 鼠标点击 跳转
- 没有引入或依赖的包,类,会提示报错
- ctrl+alt+b 可以build整个工程,相当于sbt下面敲compile也会build工程一样
- 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的同学一些帮助。
(全文完)
分享到:
相关推荐
初学scala的人都会被Seq的各种操作符所困惑。...(2) :+和+: 两者的区别在于:+方法用于在尾部追加元素,+:方法用于在头部追加元素,和::很类似,但是::可以用于pattern match ,而+:则不行. 关于+:和:+,只要
1. 环境:Win 10、JDK-1.8、Scala-2.11、Spark-2.1 2. IDE:IDEA 3. 组件:Kafka、Redis、MongoDB 毕设项目:商品大数据实时推荐系统。前端:Vue + TypeScript + ElementUI,后端 Spring + Spark毕设项目:商品...
:Scala + ScalaTest 入门 用git克隆这个 repo: git clone https://github.com/kata-seeds/scala-scalatest-seed.git cd scala-scalatest-seed 安装依赖项并使用make运行测试: make 您最终应该会看到 1 次测试...
安装安装Sublime Text 3。 通过cmd+shift+P > Package Control: Install Package包安装和程序Package Control: Install Package 。 如果要使用LSP,请参阅本。 将此仓库克隆到~/Library/Application Support/Sublime...
基于windows10和jdk1.8的scala+sbt+idea的开发环境的详细安装教程,希望对您有用,后期还会更新,请关注,一起进步,谢谢!
注意是Programming Scala的第二版,而不是Programming in Scala的第二版,更注重于与Spark相关的知识!强烈推荐!Programming Scala- Scalability = Functional Programming + Objects, 2 edition
Scala弹簧靴 Scala + Springboot + Spring Data Jpa 示例。 跑步 gradle 引导运行
项目概述:此项目为大数据处理利器集,以Scala为主要编程语言,辅以Java,共包含530个文件。项目核心采用Spark进行批处理与流处理,整合了ZooKeeper和Kafka以增强分布式计算和数据流管理能力。文件类型多样,包括175...
用于 Docker 的 Scala SBT 编译器映像。 此图像旨在用作 sbt 编译器工具。 配置 此 docker 映像包含以下软件堆栈: 操作系统:busybox Java:Oracle JDK 1.8.0_40 Scala:2.11.6 SBT:0.13.8 依赖关系 历史 0.1...
Programming Scala introduces an exciting new language that offers all the benefits of a modern object model, functional programming, and an advanced type system. Packed with code examples, this ...
本方案集成了CentOS环境下的Spark、Hadoop、Hive、Scala、sbt和ZooKeeper,无需考虑版本兼容问题,可以直接用于大数据处理和分析。 【适合人群】 需要在CentOS下搭建大数据处理平台的工程师。 【包含内容】 - Spark ...
scala-bcrypt:用于jBcrypt + pom.xml的Scala包装器
包含 Scala-2.12.8 和 sbt-1.2.8 安装包,这两个安装包都是从官网下载下来的,亲测可用
第1天:开学+常见业务+MR 第2天:MR+Hive 第3天:Hive02_03 第4天:scala+spark 第5天:yarn和spark 第6天:LR+商品项目 第7天:数据采集业务+flume 第8天:实时采集kafka+SparkStreaming 第9天:Spark Streaming02+...
要求Java8的sbt用法编译sbt compile测试sbt test覆盖范围生成sbt clean coverage test coverageReport静态分析:Scalastyle sbt scalastyle静态分析:替罪羊sbt scapegoat复制并粘贴支票sbt cpd检查相关的库更新sbt ...
本书介绍Scala基本语法、构造。以及如何将您已经知道的复制java语法转换为Scala,了解Scala除了javabecome之外还提供了哪些功能编程概念和惯用技巧和建议,这些技巧和建议在将现有java项目转换为Scala时非常有用
冲浪工具 Scala +播放+ Akka + ScalaJS + React + React.Native
准备环境:在此提交中,您可以检查如何准备项目和SBT配置。 您可以在以下文章中了解有关此内容的更多信息:和 DI:APIService和UserService :在本示例中,我们使用Cake Pattern作为提供编译时依赖注入的方式。 ...
play-scala-seed.g8:播放Scala种子模板:运行“ sbt new playframeworkplay-scala-seed.g8”
解决办法:下载安装sbt,假设安装路径为 C:\Program Files (x86)\sbt创建文件(路径不存在就创建) C:\Users\raozhengf