clojure集成开发环境之leiningen+nrepl+emacs
首先来讲下Leiningen是什么东东?
Leiningen是一个用于自动化(构建)clojure项目的工具。
它可以做到:
创建新项目
管理你的项目的依赖关系
运行测试
运行一个REPL(读取-求值-打印循环:read-eval-print loop)
编译java源码
运行项目
为项目产生一个Maven风格的POM文件
为了部署,编译和打包项目
发布类库到Maven仓库,例如Clojars
运行Clojure编写的自定义的自动化任务(称为Leiningen插件)
... 具体可以查看国内的大牛(killme2008)翻译的Leiningen教程中文版的详细介绍。
好些话说多了点,大家别着急啊,马上就切入主题:
1. 下载安装Leiningen
linux:
1. 确保你是jdk 6 版本以下的。
2. 下载脚本lein
3. 把lein加入下当前的$path下(~/bin 是最好的选择)
4. 赋可执行权限(chmod 755 ~/bin/lein)
windows:
1. 可以直接下载打包好的文件,地址是:Leiningen for windows
2. 点击下载好的*.exe文件进行安装
3. 安装好后,可以查看环境变量中会有相应的变量被设置好了:
lein.bat is added to your PATH variable.
LEIN_JAVA_CMD is set to point to your selected JDK, and the :java-cmd property is set in your user profile in profiles.clj.
接下来,打开命令窗口,输入命令:lein self-install ,会自动下载安装leiningen 相关的jar文件。
验证下安装成果: 在命令窗口中输入lein repl ,会自动连上nREPL server,进入repl模式,如下所示:
C:\Users\linjx>lein repl nREPL server started on port 21912 REPL-y 0.2.0 Clojure 1.5.1 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) user=>
如果出现上面的提示,则说明leiningen安装成功,你可以在使用leiningen开发你的clojure之旅了。
但是往往我们不满足于现状,希望可以更有效的使用lein编写clojure。类似java的idea,eclipse一样,都对编写java提供了强大的工具,那么我们可以选择什么样的工具呢,毫无疑问,Emacs是最合适的工具,没有之一:)
对于我这断断续续学习emacs的来说,还真不是不容易,昨晚查看了相关的e文说明,在emacs中成功装配了nrepl ,用以后续的开发学习,便记录一下,希望对自己以后查阅,以及需要的人有所帮助。
首先,我本地有emacs 24 版本的, 这里不想讲emacs 的安装,这个大家自个儿查询下google便可以了。
在安装好leiningen之后,现在进入nrepl的主页看看,这是个什么东东!
nrepl.el is an Emacs client for nREPL,the Clojre networked REPL server.It's a great alternative to the now deprecated combination fo SLIME + swank-clojure.
nrepl.el是emacs作为nrepl的一个客户端,nrepl是一个反对目前slime+swank-clojure组合的最好的替代品。
下面来看下如何安装nrepl.el:
1. emacs 24 以及更高版本是构建在package.el之上的,但是emacs 23以下版本的,你需要自己获取package.el .
虽然我的是24版本的,但是我也下载了package.el,并存放在 C:\Users\linjx\AppData\Roaming\.emacs.d 目前下,这个是我的emacs在windows下的配置目录。
2. 这里需要提一个文件,即 .emacs 文件,这个是emacs初始化配置的文件,位于C:\Users\linjx\AppData\Roaming 目录下。
如果你不需要使用Marmalade,则添加配置 到 .emacs文件中,如下所示:
(require 'package) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (package-initialize)
由于使用MELPA the code ,需要添加配置到 .emacs文件中,
(require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (package-initialize)
在emacs中打开.emacs文件,并M-x eval-buffer,执行当前的配置。
3. 刷新配置
M-x package-refresh-contents 回车
emacs会自动下载安装Marmalade , melpa相关的配置;
4. 安装nrepl
输入命令
M-x package-install 回车 nrepl 回车
致此,nrepl集成到emacs的安装完毕,可以使用emacs开发你的hello world!了。
( 当然,emacs还可以与其他集成用来clojure的开发,这里我就不详述了,毕竟没有使用!)
现在我们使用lein new 一个clojure项目出来:
1. $ lein new hello
2. 打开emacs,在buffer中打开 hello所在的目录下的project.clj文件
3. 输入命令:M-x nrepl-jack-in,即可初始化一个nrepl server 和 nrepl client
如下图所示: