在Eclipse中整合Leiningen -- integrate Leiningen into Eclipse using 'External Tools'
*Note: If you want to read an English version of this article, please give me a sign so that I can translate my article into English (when I am available). Or, you can refer to this one alternatively: http://sexp.posterous.com/poor-mans-integrating-leiningen-into-counterc. BUT please be aware of that it's different from following one.
Leiningen是特意為Clojure而寫的自動化工程構建工具,這個工具是基於Maven之上開發的。有了這個工具,我們就可以通過直接編寫Clojure程式碼來指揮Leiningen去構建工程。
這個工具並沒有現成的eclipse外掛,參考網上找到的這篇部落格的介紹,使用eclipse的“外部工具” (externaltools)來整合Leiningen到eclipse。
Leiningen在Github上的主頁介紹了兩種安裝方法:
- 下載指令碼,執行指令碼進行安裝(在Windows上和Unix/Linux上稍有區別,在Windows上要求多下載一個下載工具),或者
- 直接下載使用已經打好的jar包
強迫症使得筆者想使用手動安裝配置(這樣就不會有留下垃圾的擔憂了),所以我們使用直接下載的jar包。下面是步驟。
第一步:下載檔案
這裡要注意一點是:無論在Linux還是Windows下面,Leiningen都是通過指令碼來啟動的,在Windows平臺下面的指令碼是lein.bat(也就是那個可以用來安裝Leiningen的指令碼),因此我們除了下載jar之外還得下載這個指令碼,從github上可以找到相關的連線,這裡為了方便給出截止到2011/11/7還有效的連結:
將下載好的檔案放到一個資料夾裡:
注意到我們將這些檔案放在了eclipse的工作空間裡,這樣子有便於利用eclipse“外部工具”中的變數來獲得檔案路徑,後面我們可以就看到。
第二步:修改指令碼
下載下來的指令碼預設會將使用者預設資料夾作為安裝目錄:
留意上面第15和16行,我們將修改第15行,讓它們指向我們放檔案的目錄,我們在第14行新增“setf0=%~f0”,並將15行中的“LEIN_HOME=%USERPROFILE%\.lein”改成“LEIN_HOME=%f0:~0,-8%”:
這裡的修改獲得指令碼(lein.bat)的當前路徑,從而使得無論你將資料夾“lein”放在哪裡都可以得到正確的路徑。
第三步:配置eclipse的externaltools
在eclipse中開啟externaltools的配置頁面。根據eclipse版本的不同,下面截圖也許有差別,本人使用的是eclipse3.7.1:
- Run -> External Tools -> External ToolsConfigurations…
- 在彈出視窗中選擇“Program”然後點選新建圖示:
- 然後在彈出的頁面中分別進行如下操作:
1) —— 輸入名字如lein-new
2) —— 點選“變數”按鈕然後選擇${workspace_loc},選擇後編輯地址條目讓它指向我們放Leiningen檔案的地方(這就是為什麼一開始要把檔案放到eclipse的工作空間,這裡利用了變數${workspace_loc}來指向我們的檔案)
3) —— 點選“變數”按鈕然後選擇${workspace_loc}
4) —— 在引數一欄輸入“new${project_name}”(這裡也可以通過先選取變數然後再編輯的方式) - 在同一個頁面選取“重新整理”欄,並如下圖般進行勾選:
- 轉到“常規”欄,如下圖般勾選讓你新建的工具能夠在選單中顯示:
- 點選“應用”,然後“關閉”
第四步:應用
至此,我們就配置好了一個“工具”了。下面試試效果,新建一個clojure專案test並選中,然後從選單中選擇我們剛建立的工具:
當在控制檯看到執行完畢的訊息之後,我們可以發現test專案多出了以下東西:
這說明配置成功。
第五步:配置其它Leiningen命令
重複第三步,我們可以配置出Leiningen的其它命令(*這裡還有個技巧就是在配置外部工具的時候有一個“複製”按鈕,這個按鈕在幾個配置都幾乎相同但除了引數不同的情況下特別適用),如:
關於Leiningen的命令及其使用方式,可以參考它的指南。