lein 已經成為開發 Clojure 程式的必備工具,最近在 GitHub 看到很方便的 lein 擴展 lein-localrepo ,使用他可以很簡單的將需要的 Java Libraries 加入到本地的 Maven repo
來複習一下傳統的作法
在 用 Clojure 寫 javafx 的 Hello World 一文有說到你可以使用以下的命 令將 javafx 加入到你本地的 Maven repo, 是不是覺得這個方法很麻煩?
mvn deploy:deploy-file -DgroupId=local.oracle -DartifactId=javafxrt \ -Dversion=2.2.0 -Dpackaging=jar \ -Durl=file:${HOME}/.m2/repository \ -Dfile=/opt/oracle-jre-bin-1.7.0.17/lib/jfxrt.jar
使用 lein-localrepo 來簡化這麻煩的步驟
要讓 lein 有管理本地 repo 的功能,首先你需要在 ~/.lein/profiles.clj 加入以下資訊
{:user {:plugins [[lein-localrepo "0.5.0"]]}}
猜測 jar 的 Maven coordinates
這功能其實我不知道是做什麼的(汗),大體是取得這個檔案的資訊,使用以下 命令獲得該檔案的 Maven coordinates
lein localrepo coords <filename>
舉例來說
lein localrepo coords foo-bar-1.0.6.jar
你會得到以下輸出
foo-bar-1.0.6.jar foo-bar/foo-bar 1.0.6
安裝 jar 到本地 repo
安裝 jar 的命令很簡單,如果有需要 POM 文件,他會自動生出一個迷你板 的 POM 文件,命令格式如下
lein localrepo install [-r repo-path] [-p pom-file] <filename> <[groupId/]artifactId> <version>
具體使用範例
lein localrepo install foo-1.0.6.jar com.example/foo 1.0.6 lein localrepo install foomatic-1.3.9.jar foomatic 1.3.9 lein localrepo coords /tmp/foobar-1.0.0-SNAPSHOT.jar | xargs lein localrepo install
顯示本地端 Maven repo 安裝的 jar 資訊
你可以透過
lein localrepo list [-r repo-path] [-s | -f | -d]
來取得本地端安裝的 jar 資訊,舉例來說
lein localrepo list # lists all artifacts, all versions lein localrepo list -s # lists all artifacts with description lein localrepo list -f # lists all artifacts and filenames lein localrepo list -d # lists all artifacts with detail
移除本地端的 jar 檔案 (目前尚無這功能)
作者似乎還沒將這個功能加上去,但是 GitHub 上的 Readme 已經有命令了,所 以我也將他列出來
你可以使用
lein localrepo remove <[groupId/]artifactId> [<version>]
來移除本地端的 jar 檔案,舉例來說
lein localrepo remove com.example/foo # removes all versions lein localrepo remove foomatic # removes all versions lein localrepo remove com.example/foo 1.0.3 # removes only specified version