您的位置:首页 > 其它

配置IntelliJ IDEA 13的SBT和Scala开发环境

2015-11-09 16:01 603 查看



2014年6月5日 by
debugo
·
暂无评论
对于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文件每行之间必须有空行。

name := “sbtTest”

version := “1.0″

scalaVersion := “2.10.4″

libraryDependencies += “org.mongodb” %% “casbah” % “2.7.2″

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包下载.
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
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





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;

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。

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>

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)

...

[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.

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

/**

* Created by Luffy on 2014/5/29.

*/

object helloIDEA {

def main(args: Array[String]) = {

println("hello, IDEA")

}

}

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中执行:

> 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

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.^^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: