Scala-SBT
首先安装scala插件. 在13+版本中已经默认有SBT插件.
新建一个Project, 选择基于SBT的Scala项目方式创建
下一步选择JDK和SBT, Scala的版本.
点击Finish, 会生成如下图的代码结构图: 其中
build.sbt文件类似maven的pom.xml
在src/main下会创建java, resources, scala三个Sources Root
新建scala object. (或者新建一个scala class, 但是为了在IDEA中运行, 还要在class中新建一个同名的object)
运行方式:
在scala object上右键Run你的Object名字
使用sbt命令运行
hadoop@hadoop:~/IdeaProjects$ cd scala-sbt/
hadoop@hadoop:~/IdeaProjects/scala-sbt$ ls
build.sbt project src target
hadoop@hadoop:~/IdeaProjects/scala-sbt$ sbt
[info] Loading project definition from /home/hadoop/IdeaProjects/scala-sbt/project
[info] Set current project to scala-sbt (in build file:/home/hadoop/IdeaProjects/scala-sbt/)
> compile
[info] Updating {file:/home/hadoop/IdeaProjects/scala-sbt/}scala-sbt...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 3 Scala sources to /home/hadoop/IdeaProjects/scala-sbt/target/scala-2.10/classes...
[warn] there were 1 deprecation warning(s); re-run with -deprecation for details
[warn] one warning found
[success] Total time: 6 s, completed 2015-1-30 17:16:37
> run
Multiple main classes detected, select one to run:
[1] com.zqh.akka.Pi
[2] com.zqh.scala.HelloScala
[3] com.zqh.akka.HelloAkka
Enter number: 1
[info] Running com.zqh.akka.Pi
Pi approximation: 3.1415926435897883
Calculation time: 490 milliseconds
[success] Total time: 6 s, completed 2015-1-30 17:16:47
>
- 使用IDEA自带的sbt运行
点击SBT Console视图, 点击绿色的运行按钮, 就会自动运行sbt命令
项目依赖的jar包:
Scala-Module
新建一个空的Project: codebase
空的项目里可以新建多个不同语言的module. 比如scala module, 注意这里没有sbt选项!
因为仅仅是scala模块, 只生成一个src目录, 并所以没有sbt生成的那种固定的代码结构
Maven-Module
可以在这个codebase项目中新建maven工程:
1.点击External Libraries, 然后New Module, 不要在已有的module中再new module
2.注意不要勾选Create from archetype, 否则不会自动帮你生成src/main/java等目录.
3.第一步不在已有的module新建module, 所以New Module的parent界面为none
maven的代码结构是src/main/java, src/main/resources, 以及根目录下的pom.xml用来加载第三方jar包
Gradle-Module
http://clojure.iteye.com/blog/2091723
mkdir gradle-demo && cd gradle-demo && vi build.gradle
apply plugin: 'idea'
apply plugin: 'scala'
task "createDirs" << {
sourceSets*.scala.srcDirs*.each { it.mkdirs() }
sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}
repositories{
mavenCentral()
mavenLocal()
}
dependencies{
compile "org.scala-lang:scala-library:2.10.4"
compile "org.scala-lang:scala-compiler:2.10.4"
compile "org.scala-lang:scala-reflect:2.10.4"
testCompile "junit:junit:4.11"
}
task run(type: JavaExec, dependsOn: classes) {
main = 'Main'
classpath sourceSets.main.runtimeClasspath
classpath configurations.runtime
}
gradle createDirs
:createDirs
BUILD SUCCESSFUL
Total time: 4.413 secs
在IDEA中Import Module, 选择刚才创建的目录
Clojure-module
安装IDEA的clojure插件La Clojure.
创建一个clojure-module: clojure-demo
在HelloClojure.clj右键点击Run 'HelloClojure',快捷键为: Ctrl+Shift+F10
或者右键点击Start Clojure Console, 快捷键为Ctrl+Shift+D
这个调用的实际上是Clojure的REPL, 和在命令行上执行java -jar clojure.jar是一样的
leiningen
Scala相关的插件有SBT和scala. 其中SBT会创建出样例式的代码结构工程. scala没有. 而La Clojure插件也没有.
clojure的构建工具是: leiningen
https://github.com/technomancy/leiningen
http://wiki.fnil.net/index.php?title=Leiningen%E6%95%99%E7%A8%8B%E4%B8...
More Tutorial:
http://blog.8thlight.com/colin-jones/2010/11/26/a-leiningen-tutorial.h...
https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md
http://ben.vandgrift.com/2013/03/13/clojure-hello-world.html
下载 https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lei... 脚本放到~/bin下
mv lein.txt lein
chmod 755 lein
第一次执行lein会去下载leiningen.jar包. 后面再次执行时还会下载, 参考lein脚本设置LEIN_JAR就使用已有的jar
vi ~/.bashrc
export LEIN_JAR=/home/hadoop/.lein/self-installs/leiningen-2.5.0-standalone.jar
export PATH=$PATH:/home/hadoop/sh:/home/hadoop/bin
source ~/.bashrc
hadoop@hadoop:~/IdeaProjects/codebase$ lein new clojure-project
Generating a project called clojure-project based on the 'default' template.
The default template is intended for library projects, not applications.
To see other templates (app, plugin, etc), try `lein help new`.
hadoop@hadoop:~/IdeaProjects/codebase$ tree clojure-project/
clojure-project/
├── doc
│ └── intro.md
├── LICENSE
├── project.clj
├── README.md
├── resources
├── src
│ └── clojure_project
│ └── core.clj
└── test
└── clojure_project
└── core_test.clj
6 directories, 6 files
lein REPL
hadoop@hadoop:~/IdeaProjects/codebase/clojure-project$ lein repl
nREPL server started on port 59876 on host 127.0.0.1 - nrepl://127.0.0.1:59876
REPL-y 0.3.5, nREPL 0.2.6
Clojure 1.6.0
Java HotSpot(TM) 64-Bit Server VM 1.7.0_67-b01
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
user=> (+ 1 2)
3
user=> quit
Bye for now!
hadoop@hadoop:~/IdeaProjects/codebase/clojure-project$ lein run
No :main namespace specified in project.clj.
lein RUN
hadoop@hadoop:~/IdeaProjects/codebase/clojure-project$ cat project.clj
(defproject clojure-project "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.6.0"]]
:main ^:skip-aot clojure-project.core
:target-path "target/%s"
:profiles {:uberjar {:aot :all}})
hadoop@hadoop:~/IdeaProjects/codebase/clojure-project$ cat src/clojure_project/core.clj
(ns clojure-project.core)
(defn foo
"I don't do a whole lot."
[x]
(println x "Hello, World!"))
(defn -main []
(foo "zqh"))
hadoop@hadoop:~/IdeaProjects/codebase/clojure-project$ lein run
zqh Hello, World!
IDEA与leiningen
http://clojure.iteye.com/blog/1740422
http://www.cnblogs.com/devos/p/4201743.html
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。