对于scala的开发环境,公认最好的IDE是IntelliJ IDEA+scala&sbt插件。sbt(Simple Build Tool,a build tool for Scala.)是scala专用的构建工具,使用scala语言编写,配置比maven等构建工具简单了许多。sbt集成了依赖管理(使用Ivy做依赖管理),并“只在请求时更新”。(详见twitter, scala school的简单构建工具)
SBT其他相关链接
sbt http://www.scala-sbt.org/
sbt github https://github.com/sbt/sbt
sbt-idea https://github.com/mpeltonen/sbt-idea
我在配置IDEA+scala&sbt的过程中走了不少弯路,所以记录一下配置的过程,希望对大家有所帮助。
打开安装完成的Intellij IDEA 13(http://www.jetbrains.com/idea/),首先要安装好scala和sbt plugin。在IDEA的wizard中选择plugin -> 安装插件 -> 搜索scala和sbt,然后等待安装完成即可。
创建一个Scala – sbt项目sbtFirst
虽然这个项目采用sbt格局,但少了sbt-idea插件,IDEA并不能对这个项目进行操作,只能打开sbt console。
首先我们需要修改项目的build.sbt文件,添加需要的Scala版本和libraryDependencies,注意sbt文件每行之间必须有空行。
1
2
3
4
5
6
7
|
name
:
=
“
sbtTest”
version
:
=
“
1.0″
scalaVersion
:
=
“
2.10.4″
libraryDependencies
+=
“
org
.
mongodb”
%
%
“
casbah”
%
“
2.7.2″
|
sbt console点击绿色的运行图标,
执行console
命令,sbt会根据build.sbt中的设置下载依赖jar。
注意,下载Scala的几个jar慢的很蛋疼,所以最好用其他方式先把对应的jar包下载.
1
2
3
4
5
|
http
:
//repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.10.4/scala-reflect-2.10.4.jar
http
:
//repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.10.4/scala-compiler-2.10.4.jar
http
:
//repo1.maven.org/maven2/org/scala-lang/scala-library/2.10.4/scala-library-2.10.4.jar
|
然后放到对应的目录下:
.ivy2\cache\org.scala-lang\scala-library\jars
.ivy2\cache\org.scala-lang\scala-complier\jars
.ivy2\cache\org.scala-lang\scala-reflect\jars
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
gt
;
console
.
.
.
.
.
.
[
info
]
downloading
http
:
//repo1.maven.org/maven2/org/mongodb/casbah-commons_2.10/2.7.2/casbah-commons_2.10-2.7.2.jar ...
[
info
]
[
SUCCESSFUL
]
org
.
mongodb
#casbah-commons_2.10;2.7.2!casbah-commons_2.10.jar (6072ms)
[
info
]
downloading
http
:
//repo1.maven.org/maven2/org/mongodb/casbah-core_2.10/2.7.2/casbah-core_2.10-2.7.2.jar ...
[
info
]
[
SUCCESSFUL
]
org
.
mongodb
#casbah-core_2.10;2.7.2!casbah-core_2.10.jar (15255ms)
[
info
]
downloading
http
:
//repo1.maven.org/maven2/org/mongodb/casbah-query_2.10/2.7.2/casbah-query_2.10-2.7.2.jar ...
[
info
]
[
SUCCESSFUL
]
org
.
mongodb
#casbah-query_2.10;2.7.2!casbah-query_2.10.jar (19410ms)
[
info
]
downloading
http
:
//repo1.maven.org/maven2/org/mongodb/casbah-gridfs_2.10/2.7.2/casbah-gridfs_2.10-2.7.2.jar ...
[
info
]
[
SUCCESSFUL
]
org
.
mongodb
#casbah-gridfs_2.10;2.7.2!casbah-gridfs_2.10.jar (5611ms)
[
info
]
downloading
http
:
//repo1.maven.org/maven2/com/github/nscala-time/nscala-time_2.10/1.0.0/nscala-time_2.10-1.0.0.jar
[
info
]
[
SUCCESSFUL
]
com
.
github
.
nscala
-
time
#nscala-time_2.10;1.0.0!nscala-time_2.10.jar (8390ms)
[
info
]
downloading
http
:
//repo1.maven.org/maven2/org/slf4j/slf4j-api/1.6.0/slf4j-api-1.6.0.jar ...
[
info
]
[
SUCCESSFUL
]
org
.
slf4j
#slf4j-api;1.6.0!slf4j-api.jar (3815ms)
[
info
]
downloading
http
:
//repo1.maven.org/maven2/org/mongodb/mongo-java-driver/2.12.2/mongo-java-driver-2.12.2.jar ...
[
info
]
[
SUCCESSFUL
]
org
.
mongodb
#mongo-java-driver;2.12.2!mongo-java-driver.jar (29425ms)
[
info
]
downloading
http
:
//repo1.maven.org/maven2/joda-time/joda-time/2.3/joda-time-2.3.jar ...
[
info
]
[
SUCCESSFUL
]
joda
-
time
#joda-time;2.3!joda-time.jar (29542ms)
[
info
]
downloading
http
:
//repo1.maven.org/maven2/org/joda/joda-convert/1.2/joda-convert-1.2.jar ...
[
info
]
[
SUCCESSFUL
]
org
.
joda
#joda-convert;1.2!joda-convert.jar (2633ms)
Welcome
to
Scala
version
2.10.4
(
Java
HotSpot
(
TM
)
Client
VM
,
Java
1.7.0_40
)
.
Type
in
expressions
to
have
them
evaluated
Type
:
help
for
more
information
.
gt
;
|
下载完成后,我们可以在sbt console下测试一下dependencies能否被正确import。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
scala
>
import
com
.
mongodb
.
casbah
.
Imports
.
_
import
com
.
mongodb
.
casbah
.
Imports
.
_
scala
>
val
mongoClient
=
MongoClient
(
"192.168.17.202"
)
;
mongoClient
:
com
.
mongodb
.
casbah
.
MongoClient
=
com
.
mongodb
.
casbah
.
MongoClient
@
c2512d
# 或者使用URI的方式登录
scala
>
val
rs1
=
new
ServerAddress
(
"192.168.17.202"
,
27017
)
scala
>
val
mongoClient
=
MongoClient
(
uri
)
mongoClient
:
com
.
mongodb
.
casbah
.
MongoClient
=
com
.
mongodb
.
casbah
.
MongoClient
@
2c304d
<
/
td
>
|
下一步是配置sbt-idea插件,参考https://github.com/mpeltonen/sbt-idea,要在$HOME/.sbt/0.13/plugins/build.sbt下添加下面的插件配置(Windows的目录C:\Users\Luffy\.sbt\0.13\plugins,如果没有需要建出来)
resolvers += "Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
重启IDEA,进入sbt console,sbt会自动更新插件。(Windows下如果没有更新,可以安装个sbt的MSI包并在terminal中打开sbt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
.
.
.
[
info
]
Loading
global
plugins
from
C
:
\
Users
\
Luffy
\
.
sbt
\
0.13
\
plugins
[
info
]
Updating
{
file
:
/
C
:
/
Users
/
Luffy
/
.
sbt
/
0.13
/
plugins
/
}
global
-
plugins
.
.
.
[
info
]
Resolving
com
.
github
.
mpeltonen
#sbt-idea;1.6.0 ...
.
.
.
.
.
.
[
info
]
downloading
http
:
//repo1.maven.org/maven2/com/github/mpeltonen/sbt-idea_2
.
10_0.13
/
1.6.0
/
sbt
-
idea
-
1.6.0.jar
.
.
.
[
info
]
[
SUCCESSFUL
]
com
.
github
.
mpeltonen
#sbt-idea;1.6.0!sbt-idea.jar (10511ms)
[
info
]
Done
updating
.
|
完成后,在IDEA的sbt console下执行gen-idea命令,会提示reload project
External Libraries下会出现sbt的libraryDependencies
OK,配置完成。
下面在该sbt项目src/main/scala下创建一个scala object对象helloIDEA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/**
* Created by Luffy on 2014/5/29.
*/
object
helloIDEA
{
def
main
(
args
:
Array
[
String
]
)
=
{
println
(
"hello, IDEA"
)
}
}
|
在sbt console中执行:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>
compile
[
info
]
Compiling
1
Scala
source
to
C
:
\
Users
\
Luffy
\
IdeaProjects
\
sbtFirst
\
target
\
scala
-
2.10
\
classes
.
.
.
[
success
]
Total
time
:
1
s
,
completed
2014
-
5
-
29
16
:
24
:
07
>
run
[
info
]
Running
helloIDEA
hello
,
IDEA
[
success
]
Total
time
:
0
s
,
completed
2014
-
5
-
29
16
:
24
:
10
|
All done.^^