今天是2017年5月24日。隔壁team用clojure寫了個工具,我們要拿來用,於是弄了個leiningen來嘗試。還沒有最后成功,先記錄一下一些連蒙帶猜的步驟,以免忘記。
一、單獨運行的clojure
關於clojure是什么東西就自行百度了,簡單說就是用Lisp語言寫的程序,編譯成.class放在jvm上面跑,所以是需要jre的。獨立的clojure可以從官方網站找到,目前穩定版本是1.8,官網https://clojure.org/index。下載后是一個zip,里面有個jar是clojure-1.8.0.jar,可以像常用的jar那樣運行,這樣會得到一個REPL交互環境,當然需要預先配置好jre(java8)。
https://repo1.maven.org/maven2/org/clojure/clojure/1.8.0/clojure-1.8.0.zip

二、安裝leiningen
這個是clojure上類似maven的東西。貌似它本質上就是整合了maven,會用到maven在當前用戶下的配置文件,但應該不需要maven本身。安裝和運行Leiningen也不需要預先安裝clojure本身。官網 https://leiningen.org/,上面有安裝方法,就是通過一個script(lein for linux,或者lein.bat for win)來安裝和運行。
1. 用lein.bat self-install,安裝出錯,原因是無法下載lein它本身的jar。我在公司用代理,所以需要設置代理服務器。可以在lein script的最前面加上例如export HTTPS_PROXY=http://Username/Password@proxyserver:port的格式。
2. 如果仍然無法下載,可以嘗試直接從leiningen的github那里下載,https://github.com/technomancy/leiningen/releases,目前有2.7.1版本,下載到的是一個zip,可以改后綴名為jar,然后按照message的提示,放到對應的位置,例如 c:/Users/abc/.lein/self-installs/leiningen-2.7.1-standalone.jar。也可以修改lein script內部查到jar的位置的變量,來指向這個jar。script內原文是這樣的:
![]()
![]()
通過修改LEIN_HOME,來指向特定目錄,例如 export LEIN_HOME="${LEIN_HOME:-"/home/test01/lein"}"。如有需要,再修改LEIN_JAR的指向,或者按照它的目錄名來放置lein的jar。這樣lein script就不會再嘗試聯網下載了。
三、運行和打包lein項目
由於實際項目中,都要用到第三方包,所以依賴關系的處理就無法避免了。用lein來運行和打包項目,就跟maven的道理一樣。測試中遇到問題,就是jre鏈接不上lein的官方倉庫clojars,提示SSL認證問題。這時可以用瀏覽器打開它的主頁,保存網站的證書為cer文件,然后添加到jre的lib/security/cacerts文件中,這個是jre的默認證書倉庫。具體步驟參考java的keytool的用法。
如果是在project.clj文件中指定了私有倉庫,並且需要登錄的,可以在project.clj對應的那個repository后面加上username和password,例如下面的配置。可以參照官方的例子 https://github.com/technomancy/leiningen/blob/stable/sample.project.clj,里面有注釋提及。
["repo-releases" {:url "http://blueant.com/archiva/internal"
:username "abcd"
:password "1234"}]
而lein的幾個簡單用法如下:
lein repl:打開REPL環境。
lein run:運行項目。
lein uberjar:打包項目,包含依賴項。得到jar后就跟平常的jar沒有區別了。
