原創,轉載請註明。java
本文關注怎樣在eclipse上搭建基本的Clojure開發環境。本文讀者須要有Java的開發經驗和eclipse的使用經驗,最好有Maven使用經驗。git
Clojure 是以JVM爲基礎平臺的 Lisp 方言,屬於現代的函數式語言。關於Clojure自己能夠訪問其官網(http://clojure.org/)進行了解。程序員
Leiningen是針對Clojure的項目構建工具,兼容Maven。其官網地址是:https://github.com/technomancy/leiningen。關於Leiningen的徹底使用方法請移步其官網。github
Counterclockwise是用於進行Clojure開發的eclipse插件,官網位於:http://code.google.com/p/counterclockwise/。小程序
本文操做環境以下:eclipse
1) 操做系統:Windows 7。函數
2) JDK:Oracle JDK 1.6。工具
3) Clojure:1.3.0。學習
4) Leiningen:1.7.0。google
5) eclipse:eclipse 3.7 (Indigo) jee edition。
6) Counterclockwise:0.5.0.STABLE002。
從官網上(http://clojure.org/downloads)下載Clojure的zip文件,版本爲1.3.0。以「解壓到當前文件夾」的方式解壓文件,隨後能夠將此文件夾放入到任何目錄中。本文將其放入「D:\dev」目錄。
在系統環境變量中加入環境變量「CLOJURE_HOME」,值爲Clojure的主目錄,這裏是「D:\dev\clojure」。在系統環境變量「CLASSPATH」的值上追加上「;%CLOJURE_HOME%\;」。
Leiningen的下載地址是:https://github.com/technomancy/leiningen/downloads。雖然如今的Leiningen的最新版本是1.7.0,可是咱們這裏下載其中的leiningen-1.4.1-win32.zip。下載後將其以「解壓到當前文件夾」的方式解壓,獲得lein文件夾。本文將這個文件夾放入「D:\dev」目錄。
編輯這個文件夾中的lein.bat文件,將文件第三行的「set LEIN_VERSION=1.5.2」改成「set LEIN_VERSION=1.7.0」,即便用最新版本的Leiningen。
如今以命令行的方式進入到lein文件夾中,即「D:\dev\lein」,運行命令「lein self-install」,即進行Leiningen的自安裝,這時腳本會從官網上下載指定版本的Leiningen的jar文件,並做必要配置。
在系統環境變量中加入環境變量「LEIN_HOME」,值爲Leiningen的主目錄,這裏是「D:\dev\lein」。在系統環境變量「PATH」的值上追加上「;;%LEIN_HOME%\;」。這樣咱們就能夠在任意目錄中調用lein.bat了。
開啓命令行,執行命令「lein plugin install lein-eclipse 1.0.0」,安裝Leiningen的eclipse插件,版本爲1.0.0。等待插件的安裝直至出現提示「lein plugin install lein-eclipse 1.0.0」。這時此插件就已經安裝好了。
運行eclipse,並在菜單上選擇:Help –> Install New Software -> 在彈出的對話框中點擊「Add」添加Name爲counterclockwise的site,其location爲http://ccw.cgrand.net/updatesite。添加好後,在下拉框中選擇這個site,這時eclipse會在對話框的中間區域顯示插件的詳細組件,所有勾選以後點擊「Next」。而後根據提示安裝直到完成。
在lein主目錄中建立文件夾「workspace」,並以命令行方式進入這個文件夾,執行「lein new clojure_hello」以建立「clojure_hello」項目。而後,從命令行進行剛剛被Leiningen建立的「workspace 」目錄下「clojure_hello」文件夾,執行「lein eclipse」命令以使該項目符合eclipse項目的目錄結構。該命令會根據項目目錄(即「clojure_hello」文件夾)中的「project.clj」文件中的配置信息進行一系列項目配置,例如:把配置的依賴程序包拷貝到項目文件夾下的lib子文件夾中。
「project.clj」文件其實就是Leiningen給項目添加的配置文件,相似於Maven的「pom.xml」。咱們這裏來瀏覽一下根據上述步驟後由Leiningen建立的該文件:
(defproject clojure_hello "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.3.0"]])
文件中的聲明其實跟Maven的pom.xml文件很是相似。簡單說明以下:
1) 第一行:聲明瞭項目的名稱「clojure_hello」和版本號「1.0.0-SNAPSHOT」。
2) 第二行:聲明瞭對該項目的描述,這裏咱們能夠任意修改雙引號中的文字。
3) 第三行:聲明瞭該項目的依賴。這裏僅依賴的Clojure的1.3.0版本。
關於「project.clj」的詳細配置說明請參見Leiningen的官網。
運行eclipse,並在菜單上選擇:File -> Import,在彈出的對話框的中心區域找到「Existing Project into Workspace」選擇並點擊「Next」。點擊「Browse」選擇Clojure所在的目錄,這裏爲「D:\dev\lein\workspace\clojure_hello」。點擊「Finish」以完成項目導入。
這時就能夠在eclipse看到這個項目了,項目目錄結果與基於Maven的項目基本一致,只是將「pom.xml」變成了「project.clj」。
Leiningen在建立項目的時候已經爲咱們添加了一個默認的clojure源碼文件,即:src源碼文件夾下的「clojure_hello」源碼包下的「core.clj」文件。
咱們簡單編輯一下,讓其運行後打印「Hello, Clojure!」。雖然這個程序很俗,可是爲了避免偏離主題咱們仍是這麼寫吧。^_^
編輯好後的「core.clj」文件以下:
(ns clojure_hello.core) (println "Hello, Clojure!")
其中,第一行爲這個程序文件的命名空間,至關於Java的「package」。第二行就是咱們要作的事——打印一行很俗的語句。
如今咱們的目標是運行這個小程序。
在程序文件上點右鍵並選擇Run as -> Clojure Application。不久後就會在eclipse的Console面板中看到「Hello, Clojure!」這句話了。
如今讓咱們稍稍增長點難度。編輯「core.clj」文件將其改成以下內容:
(ns clojure_hello.core) (defn hello [target] (println "Hello, " target "!"))
OK,如今咱們能對任何人說「Hello」了。這種狀況下就須要咱們在提示符下調用這個函數以求達到與初版程序相同的輸出效果了。
第一步一樣是在程序文件上點右鍵並選擇Run as -> Clojure Application。這時,會看到Clojure的一個提示符環境(即「REPL」)已經啓動。在咱們調用第二版程序中的函數以前還要作三件事:
1) 在程序文件上點右鍵並選擇Clojure -> Load file in REPL。這樣作的目的是讓這個提示符環境將這個程序文件加載進來。
2) 在程序文件上點右鍵並選擇Clojure -> Compile file in REPL。顧名思義,這是要編譯這個Clojure源碼文件。
3) 文件編譯好後,咱們爲了調用這個函數須要在程序文件上點右鍵並選擇Clojure -> Switch REPL to File’s Workspace。固然這一步是可選的,不過調用函數的時候會略有不一樣,這在後面會說明。
如今咱們能夠在這個提示符環境中調用這個函數了。在環境中鍵入調用語句「(hello "Clojure")」並鍵入Ctrl + Enter。若是沒有進行上面的第三步的話,須要將調用語句改成「(clojure_hello.core/hello "Clojure")」。其中,「clojure_hello.core」程序的命名空間,以「/」與函數名分隔。
運行效果以下圖:
好了,咱們如今用Leiningen構建了一個簡單的Clojure項目,並用eclipse和Counterclockwise運行了一個簡單的Clojure程序。
Clojure是簡單、強大和有趣的Lisp方言體檢你們學習。Clojure有三個版本,分別給予JVM、CLR和JS引擎。因爲本人是Java出身,而且Clojure最初是爲Java平臺量身打造的,所以這裏只簡單演示JVM版Clojure的構建和運行過程。
但願經過這篇文章可以消除你們第一次使用eclipse構建Clojure項目的一些小障礙。同時,也但願你們能所以喜歡上Clojure。只要你稍微讀一點Clojure的文檔,就會知道它有多麼有趣。
好吧,最後介紹下我本身。本人是Java系程序員,非純粹的,也就是說工做興趣不僅在程序設計上,固然非工做興趣更加普遍一些。
我在新浪微博、搜狐微博以及「個人搜狐」(http://i.sohu.com)上的暱稱都是「特價蘿蔔」。個人對外郵箱是:freej.cn@gmail.com。歡迎各位同仁聯繫我並討論Clojure和其餘。