Clojure 的用戶多半都是透過 Clojars 去下載需要用的函式庫,但有些時候你需要的函式庫可能作者還沒將該版本放到 Clojars 上,這種時候該怎麼辦呢?
你可以選擇:
- 透過
lein install
安裝該函式庫到本地端 - 使用本文的方法,透過 Jitpack 去下載你上傳到 GitHub 的修正版本
關於 Jitpack
如何使用
這裡以我自己的 ipify.clj 函式庫為例,假設我們要抓取的是 tag v0.1.0 的版本的話,則可以在你的 project.clj
加入這樣
(defproject aa "0.1.0-SNAPSHOT" ;; skip .... :dependencies [[org.clojure/clojure "1.8.0"] ;; add following [com.github.coldnew/ipify.clj "v0.1.0"]] :repositories [["jitpack" "https://jitpack.io"]])
注意到這邊的 dependencies
格式是 [com.github.your-github-name/your-project-name "git-tag"]
接下來就可以透過 lein deps
去抓取這個函式庫
coldnew@Fevia ~/test $ lein deps Could not transfer artifact com.github.coldnew:ipify.clj:pom:v0.1.0 from/to jitpack (https://jitpack.io): Read timed out This could be due to a typo in :dependencies or network issues. If you are behind a proxy, try setting the 'http_proxy' environment variable.
第一次執行的時候可能會失敗,因為 Jitpack 會需要抓取你的 repo 並將其編譯好放置到套件庫去,不過等會兒在重新測試就可以成功囉
coldnew@Fevia ~/test $ lein deps Retrieving com/github/coldnew/ipify.clj/v0.1.0/ipify.clj-v0.1.0.pom from jitpack Retrieving com/github/coldnew/ipify.clj/v0.1.0/ipify.clj-v0.1.0.jar from jitpack
後記
其實還有一個 lein-git-deps 這個 Leinigen 套件可以直接透過 git 把程式碼拉到本地端來解決你的專案依賴,不過這套件已經有段時間沒維護了。
大部分我自己使用的情況,都是透過 lein install
安裝到本地端來滿足依賴,Jitpack 這個套件庫可以自動幫你處理好開源的套件倒是蠻不錯的。
如果是 閉源
的函式庫,則可以考慮付費給 Jitpack 或是自己在自己的私有雲架設 Maven 倉庫。