文档章节

使用sbt搭建Scala开发环境的总结

Gavin_Zhang
 Gavin_Zhang
发布于 2013/02/26 15:25
字数 1288
阅读 47349
收藏 56

Scala是一种运行于JVM之上的新型语言。JRuby, Jython, Groovy等也可以将其他语言的一些特点带进Java的生态圈。但就个人体会,这些编程语言和Scala相比,如同Symbian之于Android或IOS。虽然大家都是一个圈子里面的,但完全不在同一个时代。加之Play Framework的助力,Scala的路会越走越宽。对于企业开发,Scala最大的障碍不在对之前Java产品的支持,而在程序员的数量上。Scala的切入点很好,因为它是强类型的语言,在运行的性能上远超出JRuby, Jython, Groovy,执行效率与Native的Java程序几无差别。在对Java的互操作方面体现很好,这就保证了企业可在使用Scala的开发中保证了之前Java软件产品的投资不会丢失。而它带入的函数式编程,对多线程编程的良好支持,为开发大量并发应用体现出优势。(这也是Play Framework的亮点)

回到现实,Scala短期内还无迹象被业界大规模采用。但如果打算将Scala带进企业开发,最好的出发点可能是自动化测试和支持软件开发的工具。对于这两方面,大多数企业的态度是,知道长期来看它的好处,但不愿在眼下去投资。如果要想做些事情,程序员不得不牺牲自己的业余时间。而Scala用于此再合适不过。所以下面我将Scala项目的开发搭建搭建做了一个总结。学语言,学以致用,用它去做一些正经的事情。

1. 安装、配置需要的软件

Scala:      http://www.scala-lang.org/downloads

Scala IDE:  http://scala-ide.org/

Scala-sbt: http://www.scala-sbt.org/release/docs/Getting-Started/Setup.html

因为sbt会使用ivy作为库管理工具。ivy默认把library repository建在user home下面。Unix/Linux/Mac OS都还好说,如果就一个分区(或一个逻辑分区),无所谓发在哪个位置啦。如果操作系统是Windows,有分了C: D: E: 等若干分区,还是不要放在默认的%USERPROFILE%下面,C盘会随着开发的项目越来越多,大量的空间被开发库所占用。定制library local repository的位置的方法是:

修改sbt配置文件:[sbt安装目录]\conf\sbtconfig.txt

文件中添加一行: -Dsbt.ivy.home=E:/dev/ivy/

用sbt创建,运行,测试和发布项目都很方便,但这还不够,软件开发是要写代码的。而务实的开发者都会用现代的IDE去写代码。用写字板,vi或其他文本编辑做开发,更多的是体现一种编程文化的象征意义,正经干活没必要放着更先进的好东西不用。安装sbteclipse插件https://github.com/typesafehub/sbteclipse, 可以在sbt console里面生成eclipse scala project。更为有用的是,sbteclipse在生成项目时会根据build.sbt里面定义的库依赖,生成一个.classpath文件。也就是已经把Eclipse Scala项目的classpath,设置好了。如果以后的开发中有使用新的第三方库,安装如下次序,可以更新classpath的配置

1). 在build.sbt里面定义库依赖

2). 在sbt console里面执行update命令,下载相应的库到local library repository

3). 在sbt console里面执行eclipse命令,更新classpath设置

 

2. 用sbt创建项目

这里用一个例子来说明:

f:\tmp\test>dir
Volume in drive F is file
Volume Serial Number is A646-F0A7
 
Directory of f:\tmp\test
 
02/19/2013  02:09 PM    <DIR>          .
02/19/2013  02:09 PM    <DIR>          ..
02/19/2013  11:04 AM               269 build.sbt
02/19/2013  02:08 PM    <DIR>          target
1 File(s)            269 bytes
3 Dir(s)  29,323,710,464 bytes free
 
f:\tmp\test>type build.sbt
name := "Project Plan"
 
version := "1.0"
 
scalaVersion := "2.9.2"
 
libraryDependencies ++= Seq(
"org.mongodb" %% "casbah" % "2.5.0",
"net.sourceforge" % "mpxj" % "4.3.0"
)
 
 
f:\tmp\test>sbt
[info] Loading global plugins from C:\Users\gzhang\.sbt\plugins
[info] Set current project to Project Plan (in build file:/F:/tmp/test/)
> eclipse
[info] About to create Eclipse project files for your project(s).
[info] Updating {file:/F:/tmp/test/}default-c4a35f...
[info] Resolving org.scala-lang#scala-library;2.9.2 ...
[info] Resolving org.mongodb#casbah_2.9.2;2.5.0 ...
[info] Resolving org.mongodb#casbah-commons_2.9.2;2.5.0 ...
[info] Resolving com.github.nscala-time#nscala-time_2.9.2;0.2.0 ...
[info] Resolving joda-time#joda-time;2.1 ...
[info] Resolving org.joda#joda-convert;1.2 ...
[info] Resolving org.specs2#specs2_2.9.2;1.12.2 ...
[info] Resolving org.specs2#specs2-scalaz-core_2.9.2;6.0.1 ...
[info] Resolving org.slf4j#slf4j-api;1.6.0 ...
[info] Resolving org.mongodb#mongo-java-driver;2.10.1 ...
[info] Resolving org.mongodb#casbah-core_2.9.2;2.5.0 ...
[info] Resolving org.mongodb#casbah-query_2.9.2;2.5.0 ...
[info] Resolving org.mongodb#casbah-gridfs_2.9.2;2.5.0 ...
[info] Resolving net.sourceforge#mpxj;4.3.0 ...
[info] Resolving org.apache.poi#poi;3.7 ...
[info] Resolving junit#junit;3.8.1 ...
[info] Done updating.
[info] Successfully created Eclipse project files for project(s):
[info] Project Plan
> exit
 
f:\tmp\test>tree
Folder PATH listing for volume file
Volume serial number is A646-F0A7
F:.
├─project
│  └─target
│      └─config-classes
├─src
│  ├─main
│  │  ├─java
│  │  └─scala
│  └─test
│      ├─java
│      └─scala
└─target
├─scala-2.9.2
│  └─cache
│      └─update
└─streams
└─$global
├─ivy-configuration
│  └─$global
├─ivy-sbt
│  └─$global
├─project-descriptors
│  └─$global
└─update
└─$global

其中,

定义build.sbt文件,请参照sbt的文档:http://www.scala-sbt.org/release/docs/index.html。 特别说明的是,当添加一个依赖库的时候,通过Maven Central Repository Search来查找很便捷。比如,项目需要使用Mongo DB的driver

在Maven Central Repository里面查找”mongodb“:

image

点击所需库的版本号到Artifact Details页面:

image

展开Scala SBT,将里面的Dependency Information拷贝粘贴到build.sbt文件里面,然后在sbt console里面运用update,eclipse。下载库,配置项目的classpath就自动完成了。

© 著作权归作者所有

Gavin_Zhang
粉丝 5
博文 10
码字总数 3076
作品 0
西安
技术主管
私信 提问
加载中

评论(12)

黑崎一护
黑崎一护

引用来自“oldpig”的评论

“Scala和这些编程语言相比,如同Symbian之于Android或IOS。” 真是伤不起。
楼主的文章,你写反了,是:这些编程语言和Scala相比,如同Symbian之于Android或IOS
firefoxmmx
firefoxmmx
恩,好东西收藏了
sinpo
sinpo

引用来自“smeite”的评论

不错,一直想写类似的文字,一直没有下手哈,我用基于scala的playframework2.1 开发了一个网站:http://smeite.com 打算有时间写写相关的心得

真心的不错啊!期待你的感悟
smeite
smeite

引用来自“若望”的评论

引用来自“smeite”的评论

不错,一直想写类似的文字,一直没有下手哈,我用基于scala的playframework2.1 开发了一个网站:http://smeite.com 打算有时间写写相关的心得

多少effort做出来的,求scala 开发经验分享

好的
推倒狮
推倒狮

引用来自“smeite”的评论

不错,一直想写类似的文字,一直没有下手哈,我用基于scala的playframework2.1 开发了一个网站:http://smeite.com 打算有时间写写相关的心得

多少effort做出来的,求scala 开发经验分享
grath
grath

引用来自“oldpig”的评论

“Scala和这些编程语言相比,如同Symbian之于Android或IOS。” 真是伤不起。

你还别嘘嘘 真的是这样
Gavin_Zhang
Gavin_Zhang 博主

引用来自“s3051024”的评论

scala是好東西

但學習曲線太高和投資報酬率太低了

是他的硬傷

以个人体验,对于有Java和Python/Ruby经验的程序员,如若能抽出2个月左右的业余时间集中学习,可以较快掌握。
smeite
smeite
不错,一直想写类似的文字,一直没有下手哈,我用基于scala的playframework2.1 开发了一个网站:http://smeite.com 打算有时间写写相关的心得
s
s3051024
scala是好東西

但學習曲線太高和投資報酬率太低了

是他的硬傷

廖师虎
廖师虎
啥时候Scala变成Symbian那样老太了?
细说 scala 开发环境

细说 scala 开发环境 前言 每个人有每个人的悲剧,我的悲剧就是选择 ScalaIDE + Maven 作为 Scala 开发环境,导致折腾到吐血。回想一下选择IDE的理由: 方便编写代码(这是最基本的,各种快捷...

clebeg
2015/10/16
147
0
使用sbt搭建Scala开发环境

Scala是一种运行于JVM之上的新型语言。JRuby, Jython, Groovy等也可以将其他语言的一些特点带进Java的生态圈。但就个人体会,这些编程语言和Scala相比,如同Symbian之于Android或IOS。虽然大...

jiatin
2016/04/10
700
2
断网机部署使用idea intellij+sbt+scala

如题,希望在断网机(一下都不能连互联网的)部署使用idea intellij+sbt+scala,遇到了sbt必须联网的问题。我的解决方案是在另一台可以上互联网的机器上(linux),搭建idea intellij+sbt+s...

kaiyuanzhe
2015/01/30
2.8K
1
打造更完美的Lift开发环境:Lift + SBT + Intellij Idea + JRebel

Lift和Scala的受欢迎程序仍在不断升温,越来越多的公司开始采用scala和Lift搭建自己的企业应用。这里推荐一款好用的网络加速器---小鸟VPN,稳定高速不掉线,www.birdsvpn.com。目前scala已推...

jiatin
2016/04/16
842
2
Scala2.11.8 + Sbt + Maven + IntelliJ Idea + Spark2.0开发环境搭建备忘

已有Hadoop yarn 和 Spark 集群部署、运行在分布式环境中,程序开发编码在PC上,由于逐渐增多Scala编写spark2.0程序,入乡随俗使用sbt和IntelliJ Idea,顺便对PC上的Scala + sbt + maven + I...

litterMo
2016/11/25
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

还为PDF转Word抓狂?以下神器让你在职场倍受欢迎!

身在职场的你,是否一直在琢磨:如何能让自己在公司更受欢迎?如何才能在办公室里混个好人缘?如何在同事圈里留个好印象?其实,想要让自己成为受欢迎的人,只要让自己成为大家需要的人不就行...

foxit2world
5分钟前
1
0
AndServer+Service打造Android服务器实现so文件调用

so 文件调用 随着 Android 移动安全的高速发展,不管是为了执行效率还是程序的安全性等,关键代码下沉 native 层已成为基本操作。 native 层的开发就是通指的 JNI/NDK 开发,通过 JNI 可以实...

夜幕NightTeam
6分钟前
1
0
Docker下kafka学习三部曲之二:本地环境搭建

在上一章《 Docker下kafka学习,三部曲之一:极速体验kafka》中我们快速体验了kafka的消息分发和订阅功能,但是对环境搭建的印象仅仅是执行了几个命令和脚本,本章我们通过实战来学习如何编写...

程序员欣宸
7分钟前
1
0
萌新推荐!不再为Excel转换PDF发愁,Aspose.Cells for .NET一步到位!

Aspose.Cells for .NET(点击下载)是Excel电子表格编程API,可加快电子表格管理和处理任务,支持构建具有生成,修改,转换,呈现和打印电子表格功能的跨平台应用程序。 将Excel工作簿转换为...

mnrssj
7分钟前
1
0
对于绘画小白怎么画制服?该注意什么?

怎样制作学生服装?想必绘画初学者们常常会想的问题吧,不知道怎样才能画好人物的衣服,别着急,今日就在这儿讲一些关于如何绘画学生衣服校服的教程给我们!期望能够帮到你们! 轻便西装是不...

热爱画画的我
13分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部